PHP致命错误:找不到类'Zend \ Mvc \ Application'

时间:2012-11-04 01:54:56

标签: php zend-framework phpunit zend-framework2

所以我一直在关注本教程:

http://framework.zend.com/manual/2.0/en/user-guide/routing-and-controllers.html
我应该运行phpunit - 我运行命令phpunit module/Album/src/Album/Controller/AlbumControllerTest.php

我正在遇到问题:

PHP Fatal error:  Class 'Zend\Mvc\Application' not found in /home/...rest of the folders here.../AlbumControllerTest.php on line 71

AlbumControllerTest.php中的第71行是:

$bootstrap        = \Zend\Mvc\Application::init(include 'config/application.config.php');

当我在Zend / Mvc / i下看到一个名为Application的文件时,所以我假设这不是问题。

config / application.config.php如下所示:

<?php
// config/application.config.php:
return array(
    'modules' => array(
        'Application',
        'Album',                  // <-- Add this line
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);

?>

根据教程 - 我相信。有谁知道如何解决这个问题?!

2 个答案:

答案 0 :(得分:2)

从Magento Commerce 2.2.7升级到2.3时,我遇到了同样的问题。 我已经通过手动编辑composer.json自动加载功能对其进行了修复:

"autoload-dev": {
    "psr-4": {


        "Magento\\Framework\\": "lib/internal/Magento/Framework/",
        "Magento\\Setup\\": "setup/src/Magento/Setup/",
        "Magento\\": "app/code/Magento/",
        "Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
    }
},

运行命令:

composer dumpautoload

就是这样。

答案 1 :(得分:0)

显然,您的ZF2未自动加载。

要为模块测试设置zf2和服务管理器,您可以使用https://github.com/ZF-Commons/ZfcBase/blob/master/test/Bootstrap.php

在您的测试中,您将使用它:

use YourNamespace\Bootstrap;

//...
public function setUp()
{
    Bootstrap::init();
    //...
    $this->controller->setServiceLocator(Bootstrap::getServiceManager());
}
//...