我们如何在一个PHP文件中加载放在不同目录中的所有类, 表示如何进行自动加载类
答案 0 :(得分:4)
您可以使用ps4和composer autoloader:https://getcomposer.org/doc/01-basic-usage.md#autoloading
composer.json:
{
"autoload": {
"psr-4": {"My_Name_Space\\": "My_Folder/"}
}
}
然后运行
composer dump-autoload
答案 1 :(得分:2)
您应该为类命名,以便下划线(_)转换为目录分隔符(/)。一些PHP框架就是这样做的,比如Zend和Kohana。
因此,您将您的类命名为Model_Article并将该文件放在classes / model / article.php中,然后您的自动加载就会...
function __autoload($class_name)
{
$filename = str_replace('_', DIRECTORY_SEPARATOR, strtolower($class_name)).'.php';
$file = AP_SITE.$filename;
if ( ! file_exists($file))
{
return FALSE;
}
include $file;
}
取自Autoload classes from different folders
的示例编辑#1未经测试
spl_autoload_register(function ($class_name) {
$filename = str_replace('_', DIRECTORY_SEPARATOR, strtolower($class_name)).'.php';
$file = AP_SITE.$filename;
if ( ! file_exists($file))
{
return FALSE;
}
include $file;
});