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
} );
12 回答
这是我在PHP 5中包含来自几个文件夹的许多类的方法 . 这只有在你有类的情况下才有效 .
我意识到这是一个较旧的帖子但是......不要包括你的课程......而是使用__autoload
然后每当你调用一个尚未包含的新类时,php将自动触发__autoload并为你包含它
这只是对Karsten代码的修改
如果您使用的是PHP 5,则可能需要使用autoload .
How to do this in 2017:
这里的PHP文档推荐:Autoloading classes
你可以使用 set_include_path :
http://php.net/manual/en/function.set-include-path.php
如果要将all包含在目录及其子目录中:
不要忘记它将使用字母顺序来包含您的文件 .
如果文件之间有 NO dependencies ...这里是一个递归函数include_once所有子目录中的所有php文件:
我建议你使用readdir()函数,然后循环并包含文件(参见该页面上的第一个例子) .
如果你想要包含一堆类而不必一次定义每个类,你可以使用:
这样你就可以在包含类的php文件中定义类而不是
$thisclass = new thisclass();
的整个列表至于它处理所有文件的程度如何?我不确定这可能会有轻微的速度降低 .
不写一个函数()来包含目录中的文件 . 您可能会丢失变量范围,并且可能必须使用“全局” . 只需循环文件即可 .
此外,当包含的文件具有将扩展到另一个文件中定义的另一个类的类名时,您可能会遇到困难 - 这个类尚未包含在内 . 所以,要小心 .