3

我在某个命名空间的某个地方有一个类。说:

namespace space;
class MyClass(){}

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

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

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

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

4

3 回答 3

3

所以看来你正在寻找class_alias

class_alias('space\MyClass', 'space_MyClass');
于 2013-07-23T11:14:08.003 回答
2

您可以使用该class_alias功能。

 class_alias('space\\' . $className, 'space_' . $classname);

或者,如果您不想使用它,也可以使用 var 之类的

$classname = 'space\\' . $className;
$class = new $classname()
于 2013-07-23T11:16:11.527 回答
0
<?php

namespace animal;

class Cats
{

    static function Says()
    {
        echo "This is working";
    }

}
$className = "Cats";

$classname = 'animal\\' . $className;
$class = new $classname();

echo $class->Says();


?>
于 2013-07-23T11:39:39.610 回答