我在某个命名空间中有一个类。说:
namespace space;
class MyClass(){}
我想要做的是为这个类创建一个别名而不扩展等等。我所拥有的是一个包含类名的字符串。我想做的是:
$className='MyClass';
use '\space\'.$className as 'space_'.$classname;
有可能吗?因为“use”关键字需要类标识符的文字字符串标记(期望标识符(T_STRING))和通常的方法,例如变量(例如,通过简单地调用$ functionName()在变量中命名的调用函数),例如,{ {3}},没有帮助。
UPD:当然,使用eval不起作用。
答案 0 :(得分:3)
所以看来你正在寻找class_alias
class_alias('space\MyClass', 'space_MyClass');
答案 1 :(得分:2)
您可以使用class_alias
功能。
class_alias('space\\' . $className, 'space_' . $classname);
或者如果你不想使用它,你也可以使用像
这样的var$classname = 'space\\' . $className;
$class = new $classname()
答案 2 :(得分:0)
<?php
namespace animal;
class Cats
{
static function Says()
{
echo "This is working";
}
}
$className = "Cats";
$classname = 'animal\\' . $className;
$class = new $classname();
echo $class->Says();
?>