【问题标题】:Auto load classes by class name like Zend Framework按类名自动加载类,如 Zend Framework
【发布时间】:2013-04-23 00:05:52
【问题描述】:

如何像 Zend Framework 那样按类名自动加载我的框架控制器和模型?

Zend Framework 自动加载类,如下所示:

new Application_Controller_Index();

表示控制器类位于application/controllers/IndexController.php

【问题讨论】:

    标签: php zend-framework model-view-controller autoload zend-autoloader


    【解决方案1】:

    为什么不去看看源代码呢? http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Loader.php

    以防万一,可能是最简单的方法:

    spl_autoload_register(function($classname){
        include str_replace('_', DIRECTORY_SEPARATOR, $classname) . '.php';
    });
    

    【讨论】:

    • 这似乎是最好的方法,所以我接受这个答案。
    【解决方案2】:

    只需使用函数 __autoload 就可以了。

    PHP 手册上有很好的例子:http://php.net/manual/en/language.oop5.autoload.php

    另外请注意,__autoload 可能很快就会被弃用。要解决这个问题,请按照手册中的说明使用 spl_autoload_register()

    【讨论】:

    • 我知道我需要使用自动加载功能,我在问 Zend 是如何设置它的,所以他们不需要指定目录,只需包含然后解析为的类名用于查找类的目录。
    • 要使用您在上面指定的格式,您必须将类名explode() 转换为位并从数组中获取路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多