致命错误:无法声明类

时间:2016-07-03 10:38:00

标签: php

我无法理解为什么php会给我一个错误

  

“致命错误:无法声明类rex \ builder \ RexBuilder,因为   名称已在/var/www/site2.dev/App/rex/RexBuilder.php上使用   第12行“

RexBuilder静态类,它只被调用一次。 我对项目进行了搜索,不再使用相同名称的类。

(define (reverse xs)
  (do ((result '() (cons (car xs) result))
       (xs xs (cdr xs)))
      ((null? xs) result)))

在index.php中调用该类

    <?php

namespace rex\builder;

require_once 'Router.php';

use rex\router\Router;

error_reporting(E_ALL);
ini_set('display_errors', 1);

class RexBuilder {

    public static function collector($array) {
        $router = new Router();
        foreach ($array as $key => $val) {
            $router->get($val->getMethod(), $val->getInterfaces(), $val->getHandler());
        }
        $router->init();
    }
}
?>

更多此类未使用

2 个答案:

答案 0 :(得分:7)

由于select PriorCount, TheDate, TheValue from ( select count(*) over (partition by TheValue order by TheDate) - 1 as PriorCount, TheDate, TheValue from MyTable order by TheDate desc) as t where t.TheDate between '2016-01-01' and '2017-01-01' 重复类而引发错误。

当您编写use rex\router\Router;时,这意味着您可以直接转到该命名空间,就像它是您当前的命名空间一样

让我们看看下一个代码:

我们将创建一个文件并声明它属于命名空间类\ a

use namespace..

现在让我们创建另一个文件//file: a.php <?php namespace classes\a; class A{ } (并声明它属于命名空间类\ b,但它对于该示例没有任何意义)

b.php

生成错误

  

致命错误:无法声明类类\ b \ A,因为该名称已在

中使用

我们需要解决方案:

首先:删除namespace classes\b; require_once "a.php"; use classes\a; //Notice that I'm using this namespace, it means I can use it directly class A{ } 标记并直接编写命名空间

use

其次,给它别名

class A{
    function __constructor(){
        $instance = new classes\a\A();
    }
}

对于您的代码,只需删除use classes\a as out_a; class A{ function __constructor(){ $instance = new out_a\A(); } } 或为其添加别名。

答案 1 :(得分:1)

问题当然是因为您将RexBuilder.php文件包含两次而不是一次。

如果您通过以下方式调用该文件:include('RexBuilder.php');require('RexBuilder.php'); include_once('RexBuilder.php');请更改require_once('RexBuilder.php');或{{1}},只允许对该文件进行一次调用。< / p>