ClassLoader es una biblioteca de PHP para clases de autoinforme. La clase automática significa que las clases se cargan solo cuando realmente son necesarias en lugar de tener que incluir cada archivo de clase en cada ejecución. Esto reduce la sobrecarga de carga de la página, especialmente en sitios web más grandes, ya que solo se deben cargar algunos de los archivos de clase. Por lo general, las clases también se cargan dinámicamente desde archivos con nombres de archivos basados en el espacio de nombres y el nombre de la clase. Esto también facilita la administración de una gran cantidad de archivos de clase.
Esta biblioteca admite dos de los estándares actuales para las clases de carga automática, a saber, PSR-0 y PSR-4. La idea básica detrás de estos estándares es que los archivos de clase residen en directorios basados en su espacio de nombres y en archivos que llevan el nombre de la clase. La diferencia clave entre estos dos estándares es que PSR-4 no requiere que todo el espacio de nombres esté presente en la jerarquía del directorio.
Sin embargo, dado que la operación de encontrar los archivos de clase reales tiende a ser relativamente costoso, esta biblioteca también proporciona mecanismos de almacenamiento de almacenamiento básicos que permiten almacenar en caché las ubicaciones de los archivos de clase en un archivo PHP. Con el almacenamiento en caché, la diferencia de rendimiento entre la carga automática y la carga de los archivos manualmente se vuelve insignificante.
La documentación de API, que se puede generar usando Apigen, se puede leer en línea en: http://kit.riimu.net/api/classloader/
La forma más fácil de instalar esta biblioteca es usar el compositor para manejar sus dependencias. Para instalar esta biblioteca a través del compositor, simplemente siga estos dos pasos:
Adquirir el composer.phar ejecutando la instalación de la línea de comandos del compositor en la raíz de su proyecto.
Una vez que haya ejecutado el script de instalación, debe tener el archivo composer.phar en su root de proyecto y puede ejecutar el siguiente comando:
php composer.phar require "riimu/kit-classloader:^4.4"
Después de instalar esta biblioteca a través del compositor, puede cargar la biblioteca al incluir el archivo vendor/autoload.php generado por el compositor durante la instalación.
Si ya está familiarizado con cómo usar el compositor, puede agregar alternativamente la biblioteca como dependencia agregando el siguiente archivo composer.json a su proyecto y ejecutar el comando composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Si no desea usar el compositor para cargar la biblioteca, también puede descargar la biblioteca manualmente descargando la última versión y extrayendo la carpeta src a su proyecto. Luego puede incluir el archivo src/autoload.php proporcionado para cargar las clases de la biblioteca.
El ClassLoader admite la autoaderada según lo definido por los estándares PSR-0 y PSR-4 a través de los métodos addBasePath() y addPrefixPath() respectivamente. No necesita comprender estos estándares para usar esta biblioteca, simplemente use el método que funcione mejor para usted.
La clase PSR-0 de la clase Autolading define que los archivos de clase deben colocarse en un árbol de directorio que refleje su espacio de nombres. Por ejemplo, la clase 'foo bar baz' podría ubicarse en un archivo '/path/to/classes/foo/bar/baz.php'. Este método suele ser la forma más simple de colocar sus archivos de clase.
Usando el método addBasePath() , puede definir los directorios base donde buscar clases. Para cargar la clase mencionada anteriormente, puede usar el siguiente código:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Si un directorio específico solo se aplica a un espacio de nombres específico, también puede usar el segundo parámetro para definir el espacio de nombres. Sin embargo, el directorio aún debe señalar el directorio base para el espacio de nombres. Por ejemplo:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Tenga en cuenta que PSR-0 también establece que los subrayados en el nombre de la clase se tratan como separadores de espacio de nombres (pero no subrayan en los espacios de nombres). Entonces, incluso si su clase se llamara 'Foo Bar_Baz', ambos ejemplos anteriores seguirían funcionando. Incluso si sus espacios de nombres de clase se definen utilizando subrayos en el nombre de la clase, debe usar invertidos en el argumento del espacio de nombres.
A diferencia de PSR-0, el estándar de auto-singesteno de clase PSR-4 no requiere que las clases se coloquen en un árbol de directorio que refleje todo su espacio de nombres. En cambio, parte del espacio de nombres puede ser reemplazada por una ruta específica.
Por ejemplo, si su clase 'foo bar baz' se ubicó en el archivo '/path/to/library/baz.php', puede registrar la ruta usando addPrefixPath() y especificando el espacio de nombres como se demuestra en el siguiente ejemplo:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Esto permite estructuras de directorio mucho más cortas, ya que todo el espacio de nombres no necesita reflejarse en el árbol de directorio. También es posible omitir el argumento del espacio de nombres, en cuyo caso la ruta funcionará igual que las rutas agregadas a través de addBasePath() , excepto por el hecho de que los subrayadores en el nombre de la clase no se tratarán como separadores de espacio de nombres.
Si bien simplemente puede llamar a la ruta agregando métodos varias veces, es posible agregar varias rutas usando una matriz. Esto generalmente hace que la configuración sea mucho más fácil. Por ejemplo, puede agregar múltiples rutas base proporcionando una matriz:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();O puede agregar rutas específicas del espacio de nombres proporcionando una matriz asociativa que define los espacios de nombres utilizando las teclas de matriz:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Como se muestra en el ejemplo anterior, también puede proporcionar una lista de rutas para un espacio de nombres específico.
Buscar clases en el sistema de archivos en cada solicitud es un asunto costoso. Se recomienda almacenar en caché las ubicaciones de los archivos para que no necesiten ser buscados en cada solicitud. Después de todo, los archivos de clase no tienden a moverse en el sistema de archivos.
Esta biblioteca proporciona un sistema de almacenamiento de almacenamiento muy simple a través de FileCacheClassLoader . La clase almacena las ubicaciones de los archivos en un solo archivo PHP que se carga en cada solicitud en lugar de buscar los archivos manualmente.
El uso del FileCacheClassLoader no difiere mucho de usar el ClassLoader . Simplemente necesita proporcionar la ruta a un archivo de caché de escritura en el constructor. El archivo se utilizará para almacenar las ubicaciones de las clases y se reescribirá cuando se descubran nuevos archivos de clase. Por ejemplo:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Esta biblioteca es Copyright (c) 2012-2017 Riikka Kalliomäki.
Consulte la licencia para la licencia y la información de copia.