动态PHP子类名

时间:2011-07-28 13:45:40

标签: php oop

我有一个非常简单的Php问题。

以下是可能的:

$foo = 'bar';
Class $foo extends Object
{
...
}

我相信任何OOP开发人员都会对我希望实现的目标有所了解。提前感谢任何提示。

更新:有时您会希望将脚本的文件名作为自己的类名(当然,您必须在类名前加上最小化的冲突)。另外......不使用eval()。我应该把代码写成:

$cls = 'MyCls' . basename(__FILE__);
Class $cls extends Object
{
...
}

3 个答案:

答案 0 :(得分:5)

你可以做点什么:

// First define the Object class
class Object
{
}

// This will be the template class
$classDef = <<<TEXT
Class __MY_CLASS_NAME__ extends Object
{
}
TEXT;

// This will generate a class based on the given template
function generateClass($name, $classDef)
{
    eval(str_replace('__MY_CLASS_NAME__', $name, $classDef));
}

// Now use it altogether
generateClass('Something', $classDef);
$a = new Something;
var_dump($a);
编辑:我同意其他人的评论..不知道你想做什么,肯定是丑陋的,但是......你去...... ..

答案 1 :(得分:3)

查看class_alias。首先,您创建一个具有固定名称的类,该类根据需要扩展Object。然后创建动态别名。

答案 2 :(得分:0)

我不知道你的具体要求是什么,但是,我认为你的做法是错误的。不要试图根据文件名创建类名,为什么不使用__autolod()来加载你喜欢的类,你的代码将知道如何找到它。