";无法重新声明类“”;FuelPHP中的问题


"Cannot redeclare class" issue in FuelPHP

在默认的FuelPHP安装中使用命名空间时,我将以下内容添加到欢迎控制器中(否则未经编辑),然后开始出现错误:

ErrorException [ Compile Error ]: Cannot redeclare class Fuel'Controller'Welcome"

代码I是:

<?php
namespace Fuel'Controller;
use Fuel'Core'Controller;

class Welcome extends Controller
{
...
}

这可能是一个初学者的问题,但我不明白为什么会发生碰撞,我已经试过了我能想到的一切。

编辑:我甚至试着把下面的代码放在类前面,错误消失了,但显示了一个非常普通的404页面。(不是FuelPHP默认显示的,而是黑色/灰色的)

if (class_exists("Controller'Welcome",false)) {
//    echo "here. (" . __FILE__ . ":" . __LINE__ . ")'n";
} else {
    //Class definition...
}

答案是您必须将配置文件中的控制器前缀更改为以下内容:

  'controller_prefix' => 'Controller''',

它实际上写在文档中。(傻我)

如果您的应用程序具有相同名称Welcomemultiple classes,则它将提供error

one file

class Welcome extends Controller
{
   ...
}

another file

class Welcome extends Controller
{
  ...
} 

Codeigniter可能重复无法重新声明类层次结构。请参阅此PHP致命错误:无法重新声明类

在控制器中,不需要设置命名空间。应用程序知道默认命名空间。

如果删除namespace Fuel'Controller;,则此错误将消失。