[英]How to call PHP a class from parent namespace?
我有以下命名空间结构和以下类文件
Application
|->App.php
|->Top
|->Start.php
|->Process.php
|->Child
|->Plugin.php
所以在 App.php 我已经声明
namespace Application;
在 Startp.php 中声明
namespace Application\Top;
在 Plugin.php 中声明
namespace Application\Top\Child;
我看到我可以从 App.php 调用 Plugin.php 类
$object = new Top\Child\Plugin();
如果它是一个子/孙命名空间,但是如果我想从 Plugin.php 调用 Process.php 怎么办,它是来自分支的父命名空间? 是否有类似双点“..”的东西来表示命名空间中的上层父目录? 我正在尝试调用类似的东西
File: Plugin.php
$object = new ..\Process();
它没有用,看起来我只能从根开始
$object = new \Application\Top\Process()
这是唯一的选择吗? 谢谢!
正如它在这里提到的http://www.php.net/manual/en/language.namespaces.basics.php (在评论中)只有一种方法可以指定命名空间 - 从根。 您不能使用 ..\\ 来缩短命名空间调用。 要缩短代码中的调用,您可以使用
use \Application\Top\Process as SomeProcess;
并使用,首先在您的代码
$object = new SomeProcess();
你也可以编写你的类加载器。 调用 $object = new ..\\Process(); 这是草图:
$classPath = explode("\\", __NAMESPACE__);
array_pop($classPath);
$newClassPath = implode("\\", $classPath) . '\\'. 'Process';
$object = new $newClassPath();
当您想在单引号中使用它们时,请务必使用双反斜杠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.