我无法理解为什么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();
}
}
?>
更多此类未使用
答案 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>