我不明白为什么 php 给我一个错误
“致命错误:无法声明类 rex\builder\RexBuilder,因为
名称已在 /var/www/site2.dev/App/rex/RexBuilder.php 中使用
12 号线
RexBuilder静态类,并且仅被调用1次。
我对该项目进行了搜索,不再有同名的类。
<?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();
}
}
?>
调用index.php中的类
RexBuilder::collector(array(
new BuildModel('POST', '/api/v1/user/register', new \api\register\Registration()),
new BuildModel('POST', '/api/v1/user/login', new \api\login\Login())));
更多 该类未使用
抛出错误的原因是use rex\router\Router;
重复的类。
当你写作时use namespace..
这意味着您可以直接进入该名称空间,就像它是您当前的名称空间一样
让我们看一下接下来的代码:
我们将创建一个文件并声明它属于命名空间类\a
//file: a.php
<?php
namespace classes\a;
class A{
}
现在让我们创建另一个文件b.php
(并声明它属于命名空间类\b,但这对于示例没有任何意义)
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{
}
产生错误
致命错误:无法声明类classes\b\A,因为该名称已在使用中
我们必须采取可能的解决方案:
第一:删除use
tag 直接写命名空间
class A{
function __constructor(){
$instance = new classes\a\A();
}
}
其次,给它起别名
use classes\a as out_a;
class A{
function __constructor(){
$instance = new out_a\A();
}
}
对于您的代码,只需删除use
或者给它一个别名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)