我正在学习命名空间如何工作并有三个文件: - index,iClass和iClassed
iClass.php
<?php
namespace app\ic;
class iClass {
public static function callMeFromClass() {
echo 'OK - you have called me!';
exit;
}
}
iClassed.php
<?php
namespace app\icl;
class iClass {
public static function callMe() {
echo 'OK - iclassed - you have called me!';
exit;
}
}
和index.php
<?php
namespace inex;
require_once 'iClass.php';
require_once 'iClassed.php';
use app\ic\iClass;
iClass::callMeFromClass();
use app\icl\iClass;
iClass::callMe();
我尝试运行后得到的错误是
无法将app \ icl \ iClass用作iClass,因为该名称已被使用 在第10行的C:\ xampp \ htdocs \ namespace \ index.php
有人可以解释为什么会出错。
答案 0 :(得分:1)
当然,您尝试在同一本地名称iClass下导入两个类,这显然是不可能的。使用完全限定的类名(命名空间名称)或以不同的名称导入它们。
使用完全限定的类名意味着:
\app\ic\iClass::callMe();
\app\icl\iClass::callMe();
或者你&#34;使用&#34;不同地方名称下的类:
use app\ic\iClass;
use app\icl\iClass as iClassed;
iClass::callMeFromClass();
iClassed::callMe();`
我建议你开始阅读你使用的东西的文档。它质量很好,并附有很好的例子:http://php.net/manual/en/language.namespaces.php