Zend framework2 如何在Zend Framework 2中加载自定义库?

Zend 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

我一直在遵循这个指南(),但我无法让Zend看到我的库(下面的错误消息)

有什么想法吗?谢谢

我的文件夹结构

MyLibraryController.php

<?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
{
    //..
}