我们如何在一个PHP文件中加载放在不同目录中的所有类

时间:2017-05-31 10:24:40

标签: php css class

我们如何在一个PHP文件中加载放在不同目录中的所有类, 表示如何进行自动加载类

2 个答案:

答案 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;
      });