Haxe/PHP: generador de código
Introducción
A partir de la nueva versión de Haxe (2,0) un nuevo objetivo se ha añadido al compilador: PHP
. Esto permite crear aplicaciones en Haxe y el despliegue de ellas en el entorno super-difundido PHP.
El código generado apoya plenamente la sintaxis Haxe sin excepciones conocidas. Puedes echar un vistazo aquí para ver lo que es capaz de Haxe. Si usted es un desarrollador de PHP, estará encantado de saber que ahora usted puede crear fácilmente las funciones locales, objetos anónimos con funciones (no sólo en función matrices), el uso de paquetes (y la versión de PHP 5.3 soporta nativa-mente los espacios de nombres, pero habrá que esperar bastante mucho antes de tenerlos a disposición en los servidores compartidos), pasar referencia de funciones con facilidad y así sucesivamente ...
Archivos generados
Para generar PHP del compilador Haxe usted debería necesitar establecer el interruptor -php
. Los interruptores aceptan un solo parámetro dir
que es el directorio donde los archivos generados serán colocados.
El siguiente comando crea código PHP en el directorio www
, asumiendo que usted tiene una clase Index
.
haxe Index -php www
En la carpeta www
usted debería encontrar un directorio lib
. Este directorio contiene los archivos generados PHP. Un archivo es generado por cada tipo definido en la aplicación; el archivo es el mismo nombre al tipo adjunto con el tipo de identificador (.class
, .enum
o .interface
) y la extensión ''.php' estándar. Por cada paquete, y sub-paquete, es generada una carpeta.
Incluso si su clase Index
is muy simple (digamos el clásico "Hello world!" como es explicado en el tutorial inicial) usted encontrará que los archivos generados son bastantes. Puede abrir algunos de ellos para ver el aspecto de los archivos generados. Es probable que encuentre que el código generado es muy legible. Si usted abre un archivo dentro de una sub-carpeta (ej: haxe.Log) verá que la clase Log
se ha generado en la clase PHP haxe_Log
. El nombre del paquete es siempre el prefijo para el nombre de tipo para evitar conflictos.
Si usted añade el interruptor -main
a la anterior línea de comandos, un nuevo archivo index.php
será generado en la carpeta www
. Este archivo solo contiene una referencia (require_once
) a la clase php.Boot que que realiza algunas operaciones de arranque y el método main
en la clase Index.
Puede cambiar el nombre de index.php
agregando el interruptor --php-front default.php
donde default.php
es el nuevo nombre.
Excavando en los archivos generados en el directorio lib
, encontrará que no hay declaraciones "require" o "require_once". El código generado usa la característica de la autoloading PHP SPL para cargar los archivos necesarios. En cada ejecución, el proceso de arranque (contenido en la clase php.Boot
) analizará el contenido entero de lib
en búsqueda de tipos y añadirlos a una HashTable que serán utilizados por la función autoloading. Para evitar el proceso de exploración puede crear una carpeta vacía cache
en la carpeta www
. Esta carpeta debe tener permisos de escritura para el proceso PHP. En el próximo acceso al script, un archivo haxe_autoload.php
es creado en la carpeta cache
. De ahora en adelante el lib
no serán explorados de nuevo a menos que borre manualmente el archivo de caché. Para evitar los casos de "error: Clase no encontrada" es mejor evitar el mecanismo de memoria caché hasta que la aplicación se trasladó a su entorno de producción.
Una tercera carpeta res
es generada por el compilador si uno o más recursos se han añadido al proceso de compilación.