249 votes

Comment inclure () tous les fichiers PHP d'un répertoire?

Question n00b très rapide, en PHP, puis-je inclure un répertoire de scripts.

ie Au lieu de:

 include('classes/Class1.php');
include('classes/Class2.php');
 

Y a-t-il quelque chose comme:

 include('classes/*');
 

Impossible de trouver un bon moyen d'inclure une collection d'environ 10 sous-classes pour une classe particulière.

474voto

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

49voto

Marius Points 27452

Voici comment j'intègre beaucoup de classes de plusieurs dossiers en PHP 5. Cela ne marchera que si vous avez des classes.

 /*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;
        }
    }
}
 

32voto

Banning Points 1325

Je me rends compte que c'est un post plus ancien MAIS ... NE PAS INCLURE VOS CLASSES ... à la place, utilisez __autoload

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

$user = new User();
 

Ensuite, chaque fois que vous appelez une nouvelle classe qui n'a pas encore été incluse, php lancera automatiquement __autoload et l'inclura pour vous

21voto

foobar Points 119

c'est juste une modification du code de Karsten

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

include_all_php("my_classes");
 

20voto

SorinV Points 339

Si vous utilisez PHP 5, vous pouvez utiliser AutoCharge à la place.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X