Autoload
Muchos desarrolladores que escriben aplicaciones orientadas a objetos crean un archivo fuente PHP para cada definición de clase. Una de las mayores molestias es tener que hacer una larga lista de includes al comienzo de cada script (uno por cada clase). A partir de PHP 5 esto ya no es más necesario gracias al nuevo esquema de carga automática de clases.
Algunos proyectos Toba ya utilizaban esteesquema, pero, hasta ahora, no se proveía una herramienta desde Toba para hacer más rápido el trabajo. El esquema habitual de implementación en los proyectos era tener una clase con un método en el cuál había un arreglo cuyas claves eran los nombres de las clases y sus valores eran los paths de esas clases. Esta forma de implementación es tediosa y propensa a errores. Cada vez que se agrega una clase al proyecto se tiene que encontrar el archivo donde se encuentra el arreglo y agregar un par clase => path en algún lugar de este arreglo.
Solución Toba
Desde la versión 2.0
se agregó una herramienta a la línea de comandos de
Toba; el comando autoload. Este comando existe para cada proyecto y la
forma de invocarlo es:
xx@yy:~$ toba proyecto autoload -p nombre_proyecto
Este comando dispara un escaneo exhaustivo sobre la base de código del proyecto identificando todas las clases e interfaces que se encuentran en la misma. Una vez obtenida esta información se genera una clase llamada nombre_proyecto_autoload.php en la raíz del código del proyecto. Esta clase provee dos funcionalidades: chequeo de existencia de una clase e inclusión de una clase. El núcleo de Toba utiliza estas primitivas para encargarse de la inclusión de todas las clases e interfaces de un proyecto.
Uso
El uso de la herramienta es simple. Cada vez que se agrega una clase se debe invocar al comando toba proyecto autoload -p nombre_proyecto. En el caso de que haya clases con nombres repetidos el comando producirá una salida por pantalla como la siguiente:
xx@yy:~$ toba proyecto autoload -p pilaga
Existen clases repetidas.
Ejecute el comando con la opción -v para más información.
Esta salida nos muestra un mensaje informando la existencia de clases repetidas en el proyecto. Si ejecutamos el comando con la opción -v obtenemos lo siguiente:
xx@yy:~$ toba proyecto autoload -p pilaga -v
-- Clases repetidas de '[/.../toba/proyectos/pilaga/php]' ---------------------------------------
[ci_revertir_confirmacion_nav]
/.../toba/proyectos/pilaga/php/p_nucleo/adelantos_responsables/ci_revertir_confirmacion_nav.php
/.../toba/proyectos/pilaga/php/p_nucleo/cajas_chicas/ci_revertir_confirmacion_nav.php
.......
Esta salida especifica la clase repetida y los paths de esa clase. Es recomendable no tener clases con el mismo nombre en el mismo proyecto ya que esto puede producir errores inesperados.
NUNCA se debe modificar el contenido del archivo generado por la herramienta ya que cuando se ejecute el comando nuevamente se perderán todos los cambios hechos.