¿En PHP puedo incluir un directorio de scripts?
es decir, en lugar de:
include('classes/Class1.php');
include('classes/Class2.php');
hay algo como:
include('classes/*');
Parece que no puede encontrar una buena manera de incluir una colección de aproximadamente 10 subclases para una clase en particular.
get_include_path()
todavía no puede determinar automáticamente el orden de carga (la clase base se puede cargar DESPUÉS de la clase extendida, errores resultantes)Esta es la forma en que incluyo muchas clases de varias carpetas en PHP 5. Sin embargo, esto solo funcionará si tiene clases.
fuente
Me doy cuenta de que esta es una publicación anterior PERO ... NO INCLUYA TUS CLASES ... en su lugar usa __autoload
Luego, cada vez que llame a una nueva clase que aún no se haya incluido, php activará automáticamente __autoload y lo incluirá por usted
fuente
Si está utilizando php 5, es posible que desee utilizar la carga automática en su lugar.
fuente
esto es solo una modificación del código de Karsten
fuente
Cómo hacer esto en 2017:
Recomendado por la documentación de PHP aquí: clases de carga automática
fuente
autoload
entrará en juego solo cuando alguien intente, es decir, crear un objeto de la clase que aún no se haya cargado.Puede usar set_include_path :
http://php.net/manual/en/function.set-include-path.php
fuente
classes/
cuando se usainclude
/require
Si desea incluir todo en un directorio Y sus subdirectorios:
No olvide que usará el orden alfabético para incluir sus archivos.
fuente
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.phpSi desea incluir un grupo de clases sin tener que definir cada clase a la vez, puede usar:
De esta manera, puede definir la clase en el archivo php que contiene la clase y no una lista completa de
$thisclass = new thisclass();
¿En cuanto a qué tan bien maneja todos los archivos? No estoy seguro de que pueda haber una ligera disminución de la velocidad con esto.
fuente
Si NO hay dependencias entre archivos ... aquí hay una función recursiva para incluir_una vez TODOS los archivos php en TODOS los subdirectorios:
fuente
fuente
Le sugiero que use una función readdir () y luego repita e incluya los archivos (vea el primer ejemplo en esa página).
fuente
No escriba una función () para incluir archivos en un directorio. Puede perder los ámbitos variables y puede que tenga que usar "global". Simplemente bucle en los archivos.
Además, puede tener dificultades cuando un archivo incluido tiene un nombre de clase que se extenderá a la otra clase definida en el otro archivo, que aún no está incluido. Así que ten cuidado.
fuente