繁体   English   中英

如何从父命名空间调用 PHP 类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM