Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类名和导入的类的重复符号声明_Php_Oop - Fatal编程技术网

Php 类名和导入的类的重复符号声明

Php 类名和导入的类的重复符号声明,php,oop,Php,Oop,这是我的班级: namespace Controller\Reference; use \Classes\Admin; class Admin extends Controller { public $data; } 如果我想使用\Classes\Admin我得到这个错误: 重复符号声明 但是如果我使用作为像一样使用\Classes\Admin作为Admin1我没有得到任何错误 我不想将用作并将我的类名更改为Admin1 如何使用Admin类名和use\Classes\Admin类

这是我的班级:

namespace Controller\Reference;

use \Classes\Admin;

class Admin extends Controller
{
    public $data;
}
如果我想
使用\Classes\Admin我得到这个错误:

重复符号声明

但是如果我使用
作为
一样使用\Classes\Admin作为Admin1我没有得到任何错误

我不想将
用作
并将我的类名更改为
Admin1


如何使用
Admin
类名和
use\Classes\Admin类名?

不能有两个同名符号。这会使代码模棱两可,无法解析

您可以将其中一个类(使用
作为
关键字)别名,或者为外部类使用完全限定名

class Admin extends Controller
{
    public $data;

    public function foo() {
        $admin = new \Classes\Admin();
    }
}

在任何情况下,都没有实际理由不使用别名,但是如果您的代码标准、样式指南或其他任何东西阻止您使用类别名。。。简单地说,不要这样做,不要导入。

你不能这样做,它将是两个同名的不同类。如果您不想将
用作
(不确定为什么),请不要将
置于顶部,只需使用带有命名空间的完整类名即可访问第二个管理类。例如,
new\Classes\Admin()
为什么给它一个别名(使用
作为
)是一个问题?这纯粹是为了美学,还是有“真正”的原因?毕竟,这里的
AS
关键字就是为了这个目的。您可以随时调用它,这比具体的
Admin1
更有意义。当问题的唯一描述是“我不想要……”时,我总是很谨慎。