我對Zend Framework 2非常陌生,並且正在使用Michael Romer的書籍「Web Development with Zend Framework 2」作爲我的指導。我在第5章的末尾介紹了ClassMapAutoloader的主題。討論的結論是,我的Helloworld模塊現在擁有的文件和目錄結構 - >Zend Framework 2 ClassMapAutoloader錯誤
Module.php
autoload_classmap.php
autoload_function.php
autoload_register.php
config/
module.config.php
public/
images/
css/
js/
src/
Helloworld/
Controller/
IndexController.php
views/
Helloworld/
Index/
index.phtml
至於我可以告訴大家,設置自動加載類映射是Module.php,autoload_classmap.php感興趣的文件, autoload_function.php,autoload_register.php。這些文件的內容是
Module.php - >
<?php
namespace Helloworld;
Class Module {
public function getAutoloaderConfig() {
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php'
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__
)
)
);
}
public function getConfig() {
return include __DIR__ . '/config/module.config.php';
}
}
autoload_function.php - >
<?php
return function ($class) {
static $classmap = null;
if ($classmap === null) {
$classmap = include __DIR_ . '/autoload_classmap.php';
}
if (!isset($classmap[$class])) {
return false;
}
return include_once $classmap[$class];
};
autoload_register.php - >
<?php
spl_autoload_register(include __DIR__ . '/autoload_function.php');
autoload_classmap.php - >
<?php
//require_once 'autoload_register.php';
return array();
當我在autoload_classmap.php中返回空數組時,這一切都有效,但在本書中示例中有require_once'autoload_register.php';.當我取消註釋該行時,出現以下錯誤 - >
錯誤是 - > [Tue Jun 18 16:29:20 2013] [error] [client 199.82.163.121] PHP致命錯誤:未捕獲的異常'Zend \ Loader \ Exception \ InvalidArgumentException'消息提供的Map文件不會返回地圖。映射文件:/var/www/ZendApp/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php:88\nStack trace:「/var/www/ZendApp/module/Helloworld/autoload_classmap.php」。 n#0 /var/www/ZendApp/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php(117):Zend \ Loader \ ClassMapAutoloader-> registerAutoloadMap('/ var/www/ZendAp ...') \ n#1 /var/www/ZendApp/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php(60):Zend \ Loader \ ClassMapAutoloader-> registerAutoloadMaps(Array)\ n#2/var/www/ZendApp/vendor/zendframework/zendframework/library/Zend/Loader/ClassMapAutoloader.php(46):Zend \ Loader \ ClassMapAutoloader-> setOptions(Array)\ n#3/var/www/ZendApp/vendor/zendframework/zendframework/library /Zend/Loader/AutoloaderFactory.php(100):Zend \ Loader \ ClassMapAutoloader - > __ construct(Array)\ n#4/var/www/ZendApp/vendor/zendframework/zendframework/library/Zend/M in/var/www/ZendApp /供應商/ zendframework/zendframework /庫/ Zend的/裝載機/ ClassMapAutoloade在線88 r.php
我知道,返回空白數組會導致Module.php的Module類中的getAutoloaderConfig()默認爲StandardAutoloader,因此它的工作原理是什麼?在這個例子中,我真的很想讓ClassMapAutoloader完成它的工作。我如何得到這個工作?預先感謝您的回覆。
詹姆斯·伊士曼
有什麼錯誤?您可以複製/粘貼 –
埃迪,Woopsie,忘記了錯誤。我編輯了我原來的帖子,現在收錄了。謝謝您的幫助。 –