我无法理解为什么php会给我一个错误
"致命错误:无法声明类rex\builder\RexBuilder,因为该名称已在第12行的/var/www/site2.dev/App/rex/RexBuilder.php中使用"
RexBuilder是静态类,它只被调用一次.我对项目进行了搜索,不再使用同名的类.
<?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();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
在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())));
Run Code Online (Sandbox Code Playgroud)
更多此类未使用
由于use rex\router\Router;重复的类而引发错误.
在编写use namespace..它时意味着您可以直接进入该命名空间,就像它是您当前的命名空间一样
让我们来看看下一个代码:
我们将创建一个文件并声明它属于命名空间类\ a
//file: a.php
<?php
namespace classes\a;
class A{
}
Run Code Online (Sandbox Code Playgroud)
现在让我们创建另一个文件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{
}
Run Code Online (Sandbox Code Playgroud)
生成错误
致命错误:无法声明类类\ b\A,因为该名称已在使用中
我们需要解决方案:
首先:删除use标记并直接编写命名空间
class A{
function __constructor(){
$instance = new classes\a\A();
}
}
Run Code Online (Sandbox Code Playgroud)
第二,给它别名
use classes\a as out_a;
class A{
function __constructor(){
$instance = new out_a\A();
}
}
Run Code Online (Sandbox Code Playgroud)
对于您的代码,只需删除use或给它一个别名.
| 归档时间: |
|
| 查看次数: |
19253 次 |
| 最近记录: |