如何解决 zf2 中的“无法重新声明类”错误


how can I solve "Cannot redeclare class" error in zf2?

我正在ZendStudio 11中使用ZF2开发一个个人理财应用程序。从新建Zend项向导添加新控制器后,我收到以下致命错误。这是截图。

错误:

_Fatal error: Cannot redeclare class Application'Controller'OutcomeController in **C:'wamp'www'PersonalFinance'module'Users'src'Users'Controller'OutcomeController.php** on line 33_  

OutcomeController类代码如下:

<?php
namespace Application'Controller;
use Zend'Mvc'Controller'AbstractActionController;
use Zend'View'Model'ViewModel;

/**
     * OutcomeController
     *
     * @author
     *
     * @version
     *
     */
    class OutcomeController extends AbstractActionController
    {
        /**
         * The default action - show the home page
         */
        public function indexAction()
        {
            // TODO Auto-generated OutcomeController::indexAction() default action
            return new ViewModel();
        }
        public function fooAction()
        {
            // This shows the :controller and :action parameters in default route
            // are working when you browse to /income/income/foo
            return array();
        }
    }

我还在autoload_classmap.php文件中添加了以下行:

'Users'Controller'OutcomeController' => __DIR__ . '/src/Users/Controller/OutcomeController.php',

所以:

  • 我已使用向导添加了控制器
  • 我已经添加了所需的控制器配置到module.config.php
  • 我添加了自动将配置行加载到autoload_classmap.php

知道为什么会发生错误吗?

正如错误消息所暗示的那样,类Application'Controller'OutcomeController已在应用程序的其他位置定义。

这与使用 ZendStudio 的向导、正确配置 ZF2 或自动加载无关。这是PHP的事情:你不能在你的应用程序中有两个同名的类(考虑到命名空间)。

为了避免此问题,您可以更改类的名称或更改声明它的命名空间。