所以,
我在使用命名空间创建动态对象时遇到问题。这是命名空间代码:
namespace Foo
{
class Bar
{
}
}
现在,我正在尝试使用以下方法创建类对象Bar
:
include('namespace.php');
$sName = 'Bar';
$sClass = '\\Foo\\'.$sName;
$rObj = new $sClass; //correct object
一切顺利。但是,现在我想使用别名并执行以下操作:
include('namespace.php');
use Foo as Baz;
$sName = 'Bar';
$sClass0= '\\Foo\\'.$sName;
$sClass1= '\\Baz\\'.$sName;
$rObj = new $sClass0; //correct object
$rObj = new $sClass1; //Fatal error
而且我无法以这种方式实例化对象(并且通过全名访问仍然可以正常工作)。所以,我的问题是 - 是否可以通过别名以某种方式访问该类,如果可以,如何访问?我也尝试在使用时访问$sClass1='Baz\\'.$sName
- 没有成功。另外,我通过get_declared_classes()
函数检查了声明的类,它表明我只有\Foo\Bar
类(没有引用别名)。
我不确定这是否重要,但我使用的是 PHP 5.5 版本。