自动包含/要求所有目录下的所有文件

Ada*_*m W 3 php autoloader

我想自动include/require所有.php目录下的所有文件.例如:

(目录结构)

-[ classes
    --[ loader (directory)
        ---[ plugin.class.php
    --[ main.class.php
    --[ database.class.php
Run Code Online (Sandbox Code Playgroud)

我需要一个自动加载所有文件的函数 .php

我尝试了各种各样的:

$scan = scandir('classes/');
foreach ($scan as $class) {
    if (strpos($class, '.class.php') !== false) {
        include($scan . $class);
    }
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*ois 5

好吧,如果你想包含所有甚至在子目录中的某些结尾的php文件,你必须做一个递归函数.像这样的东西:

function load_classphp($directory) {
    if(is_dir($directory)) {
        $scan = scandir($directory);
        unset($scan[0], $scan[1]); //unset . and ..
        foreach($scan as $file) {
            if(is_dir($directory."/".$file)) {
                load_classphp($directory."/".$file);
            } else {
                if(strpos($file, '.class.php') !== false) {
                    include_once($directory."/".$file);
                }
            }
        }
    }
}

load_classphp('./classes');
Run Code Online (Sandbox Code Playgroud)

  • 天啊`unset()`...如果你不想要`.`和`..`,不要问它们.了解`scandir()`的作用,以及它的竞争,比如`glob()` (5认同)