我注意到 Storm 提供了使用无效的信息:
我阅读了文档http://php.net/manual/ru/language.namespaces.importing.php但我仍然不明白在这种情况下,如果没有use可以清楚地使用别名来缩短长名称,那么什么都不会起作用。在通常情况下,当我这样做时$obj - new \Model\MyClass();不清楚
我注意到 Storm 提供了使用无效的信息:
我阅读了文档http://php.net/manual/ru/language.namespaces.importing.php但我仍然不明白在这种情况下,如果没有use可以清楚地使用别名来缩短长名称,那么什么都不会起作用。在通常情况下,当我这样做时$obj - new \Model\MyClass();不清楚
假设你有一堂课
然后在另一个命名空间中,要使用这个类,你要么必须使用类的全名(及其命名空间),要么可以使用
use Model\MyClass;,然后在引用类时,不要写命名空间。那些。或者
或者
这两个用例是绝对等价的。
UPD,如果您在两个命名空间中有同名的类,那么当您尝试同时使用它们时,PHP 将发出
fatal error.沙盒
UPD请注意,当使用完全限定的类名时,如果命名空间前面没有
\(“root”命名空间),则该名称将被视为相对于当前命名空间。那些。就在这儿
假设你是这样写的:
在命名空间中,一切都是相对的。例如,您在命名空间中
namespace \models\a)并且您正在尝试使用位于同一命名空间中的 User 类,那么您不需要使用 use。可以直接联系
$user = new User();b)您正在尝试使用位于命名空间 \components\ 中的 User 类,然后您需要
$user = new \components\User()在类中写入MyClass;或者,为了不总是在代码中不同的地方写类路径,指定一次
use components\User然后调用会变短:
$user = new User();为什么使用 use 时不需要前导斜杠 - 我不知道,但你可以把它省略掉,或者你可以写use \components\User. 是等价的。