将PHP名称空间别名扩展为完整名称空间字符串

Chu*_*eed 9 php namespaces

我想知道是否有办法扩展别名的PHP命名空间令牌以获取完整的命名空间标识符.这样做的目的是我们的对象创建工厂需要一个具有完整命名空间的字符串,以便它可以自动加载它.这是一个简单的例子:

<?php

use my\namespace\area as MyArea;

$goodObject = MyApp::factory('my\namespace\area\ClassName');
$badObject = MyApp::factory('MyArea\ClassName');
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些通用的解决方案,以便能够在任何情况下扩展NS别名,具体等同于:

$desiredObject = MyApp::factory(resolve_namespace_alias('MyArea') . '\ClassName');
Run Code Online (Sandbox Code Playgroud)

如果那里有人解决了这个问题,我很想知道你是怎么做到的.

hak*_*kre 1

我不知道要解析字符串,但要解析对象实例中的类:

use my\namespace\area as MyArea;

$b = new MyArea;
$c = get_class($b);
echo $c; # my\namespace\area
Run Code Online (Sandbox Code Playgroud)

这个问题有些相关:Can't getconstant fromdynamic class using namespaces