为什么这两行在Zend Bootstrap中自动加载功能

时间:2010-12-09 23:04:07

标签: php zend-framework zend-autoloader

我见过这个代码块的例子和其他没有2行注释的例子可能没有。这两行的目的究竟是什么?

$moduleLoader = new Zend_Application_Module_Autoloader(array(
    'namespace' => '',
    'basePath' => APPLICATION_PATH)
);


$autoloader = Zend_Loader_Autoloader::getInstance(); //MAYBE NOT
$autoloader->setFallbackAutoloader(true);      //MAYBE NOT

return $moduleLoader;

添加了:

  

给出答案,是吗?   这样做好事吗?在那儿   开销或任何不好的事情   关于它,或者这是标准   练?

4 个答案:

答案 0 :(得分:2)

它将使指定的自动加载器用于任何未命名空间的命名空间和类,如果没有定义该命名空间的自动加载器,则会有效地忽略“namespace”参数。

当您拥有不属于命名空间的类时,或者您需要在许多不同的命名空间中使用类时,使用$autoloader->setFallbackAutoloader(true)是合适的。

答案 1 :(得分:2)

对于标准结构自动加载器不够用的情况,第二行是一种解决方法,应该避免,因为它会减慢速度(即使有时它非常方便)。

看起来后备自动加载器在ZF 2.0中不可用。

答案 2 :(得分:1)

第一行是微不足道的,手册中提到了第二行:这意味着,Zend Autoloader将尝试(自动)加载每个类,而不仅仅是作为前缀提到的类,或者注册的Autoloader。

答案 3 :(得分:1)

首先是获取自动加载器的实例,就是这样。由于自动加载器是单例,因此它只能有一个实例。如果该实例尚不存在,则会创建它。

第二行是让自动加载器充当全部捕获 - 只要找不到某些内容,就会触发自动加载器。