Zend framework2 如何在Zend Framework 2中加载自定义库?
我一直在遵循这个指南(),但我无法让Zend看到我的库(下面的错误消息) 有什么想法吗?谢谢 我的文件夹结构 MyLibraryController.phpZend framework2 如何在Zend Framework 2中加载自定义库?,zend-framework2,Zend Framework2,我一直在遵循这个指南(),但我无法让Zend看到我的库(下面的错误消息) 有什么想法吗?谢谢 我的文件夹结构 MyLibraryController.php <?php namespace MyLibrary\Mvc\Controller; use Zend\Mvc\Controller\AbstractActionController; class MyLibraryController extends AbstractActionController { public
<?php
namespace MyLibrary\Mvc\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class MyLibraryController extends AbstractActionController {
public function __construct() {
}
public function doSomething() {
//instantiate your model here and return result
$result = "test";
return $result;
}
}
Fatal error: Class 'Directory\Controller\MyLibaryController' not found in D:\work\eclipse\htdocs\directory\module\Directory\src\Directory\Controller\DirectoryController.php on line 17
Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (MyLibrary) could not be initialized.' in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php:175 Stack trace: #0 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(149): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent)) #1 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule('MyLibrary') #2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent)) #3 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent)) #4 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 175
application.config.php中包含MyLibrary模块项的错误消息
<?php
namespace MyLibrary\Mvc\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class MyLibraryController extends AbstractActionController {
public function __construct() {
}
public function doSomething() {
//instantiate your model here and return result
$result = "test";
return $result;
}
}
Fatal error: Class 'Directory\Controller\MyLibaryController' not found in D:\work\eclipse\htdocs\directory\module\Directory\src\Directory\Controller\DirectoryController.php on line 17
Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (MyLibrary) could not be initialized.' in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php:175 Stack trace: #0 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(149): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent)) #1 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule('MyLibrary') #2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent)) #3 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent)) #4 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 175
首先,它不是一个模块,因此将其添加到app config的modules数组中会出现错误消息 编辑
autoload_namespace.php
以添加您的库(正如您已经拥有的那样)应该可以工作
也就是说,更正确的方法是将autoload
键添加到root composer.json文件中,并在那里进行映射
{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": ">2.2.0rc1"
},
"autoload": {
"psr-0": {"MyLibrary\\": "vendor/MyLibrary/library/"}
}
}
完成此操作后,从命令行运行composer.phar update
,它会自动将库添加到自动加载的_名称空间文件中。这样做意味着您不必在每次使用composer更新其他库时都手动编辑该文件
错误本身
致命错误:在第17行的D:\work\eclipse\htdocs\Directory\module\Directory\src\Directory\Controller\DirectoryController.php中找不到类“Directory\Controller\MyLibaryController”
我猜在处理了自动加载之后,您的DirectoryController
类中缺少了use
语句
<?php
namespace Directory\Controller;
// be sure to use your library controller
use MyLibrary\Mvc\Controller\MyLibraryController;
class DirectoryController extends MyLibraryController
{
//..
}