txt sobreescribir reemplazar manejo leer informatica incluir guardar ejemplos directorio archivos archivo php include

sobreescribir - reemplazar archivo php



¿Cómo incluir() todos los archivos PHP de un directorio? (12)

Esta es la forma en que incluyo muchas clases de varias carpetas en PHP 5. Esto solo funcionará si tienes clases.

/*Directories that contain classes*/ $classesDir = array ( ROOT_DIR.''classes/'', ROOT_DIR.''firephp/'', ROOT_DIR.''includes/'' ); function __autoload($class_name) { global $classesDir; foreach ($classesDir as $directory) { if (file_exists($directory . $class_name . ''.php'')) { require_once ($directory . $class_name . ''.php''); return; } } }

Muy rápida pregunta n00b, 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 podría encontrar una buena manera de incluir una colección de aproximadamente 10 subclases para una clase en particular.


Esto es solo una modificación del código de Karsten.

function include_all_php($folder){ foreach (glob("{$folder}/*.php") as $filename) { include $filename; } } include_all_php("my_classes");



Me doy cuenta de que esta es una publicación más antigua PERO ... NO INCLUYAS TUS CLASES ... en lugar de usar __autoload

function __autoload($class_name) { require_once(''classes/''.$class_name.''.class.php''); } $user = new User();

Luego, cada vez que llame a una nueva clase que no haya sido incluida, php disparará automáticamente __autoload y lo incluirá para usted


No escriba una función () para incluir archivos en un directorio. Es posible que pierda los ámbitos variables y tenga que usar "global". Sólo 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.



Si NO hay dependencias entre archivos ... aquí hay una función recursiva para include_once TODOS los archivos php en TODOS los subdirectorios:

$paths = array(); function include_recursive( $path, $debug=false){ foreach( glob( "$path/*") as $filename){ if( strpos( $filename, ''.php'') !== FALSE){ # php files: include_once $filename; if( $debug) echo "<!-- included: $filename -->/n"; } else { # dirs $paths[] = $filename; } } # Time to process the dirs: for( $i=count($paths)-1; $i>0; $i--){ $path = $paths[$i]; unset( $paths[$i]); include_recursive( $path); } } include_recursive( "tree_to_include"); # or... to view debug in page source: include_recursive( "tree_to_include", ''debug'');


Si busca incluir un montón de clases sin tener que definir cada clase de una vez, puede usar:

$directories = array( ''system/'', ''system/db/'', ''system/common/'' ); foreach ($directories as $directory) { foreach(glob($directory . "*.php") as $class) { include_once $class; } }

De esta manera, simplemente 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.


Si desea incluir todo en un directorio y sus subdirectorios:

$dir = "classes/"; $dh = opendir($dir); $dir_list = array($dir); while (false !== ($filename = readdir($dh))) { if($filename!="."&&$filename!=".."&&is_dir($dir.$filename)) array_push($dir_list, $dir.$filename."/"); } foreach ($dir_list as $dir) { foreach (glob($dir."*.php") as $filename) require_once $filename; }

No olvide que utilizará orden alfabético para incluir sus archivos.


Si está utilizando php 5, es posible que desee utilizar la autoload .


Cómo hacer esto en 2017:

spl_autoload_register( function ($class_name) { $CLASSES_DIR = __DIR__ . DIRECTORY_SEPARATOR . ''classes'' . DIRECTORY_SEPARATOR; // or whatever your directory is $file = $CLASSES_DIR . $class_name . ''.php''; if( file_exists( $file ) ) include $file; // only include if file exists, otherwise we might enter some conflicts with other pieces of code which are also using the spl_autoload_register function } );

Recomendado por la documentación de PHP aquí: clases de carga automática


foreach (glob("classes/*.php") as $filename) { include $filename; }