PHP OOP:使用字符串作为别名的标识符

时间:2013-07-23 11:02:36

标签: php oop namespaces aliases

我在某个命名空间中有一个类。说:

namespace space;
class MyClass(){}

我想要做的是为这个类创建一个别名而不扩展等等。我所拥有的是一个包含类名的字符串。我想做的是:

$className='MyClass';
use '\space\'.$className as 'space_'.$classname;

有可能吗?因为“use”关键字需要类标识符的文字字符串标记(期望标识符(T_STRING))和通常的方法,例如变量(例如,通过简单地调用$ functionName()在变量中命名的调用函数),例如,{ {3}},没有帮助。

UPD:当然,使用eval不起作用。

3 个答案:

答案 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();


?>