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



我有以下命名空间结构和以下类文件

Application
|->App.php
|->Top
   |->Start.php
   |->Process.php
   |->Child
      |->Plugin.php

因此,在App.php中,我声明了

namespace Application;

在Startp.php中声明

namespace ApplicationTop;

在Plugin.php中声明

namespace ApplicationTopChild;

我看到我可以像一样从App.php调用Plugin.php类

$object = new TopChildPlugin();

如果它是子/孙名称空间,但如果我想从Plugin.php调用Process.php,那该怎么办?Plugin.php是分支的父名称空间?是否有类似双点".."的东西来指示命名空间中的上级父目录?我正在尝试调用类似的东西

File: Plugin.php
$object = new ..Process();

它不起作用,看起来我只能像一样从根开始

$object = new ApplicationTopProcess()

这是唯一的选择吗?非常感谢。

如前所述http://www.php.net/manual/en/language.namespaces.basics.php(在注释中)只有一种方法可以指定命名空间——从根目录。您不能使用..\以缩短命名空间调用。要缩短代码中的通话时间,可以使用

use ApplicationTopProcess as SomeProcess;

并使用,首先在您的代码

$object = new SomeProcess();

此外,您还可以编写类加载器。调用$object=new。。\Process();这是草图:

$classPath = explode("\", __NAMESPACE__);
array_pop($classPath);
$newClassPath = implode("\", $classPath) . '\'. 'Process';
$object = new $newClassPath();

当你想在单引号中使用双反斜杠时,一定要使用它们。

最新更新