我有一个非常简单的Php问题。
以下是可能的:
$foo = 'bar';
Class $foo extends Object
{
...
}
我相信任何OOP开发人员都会对我希望实现的目标有所了解。提前感谢任何提示。
更新:有时您会希望将脚本的文件名作为自己的类名(当然,您必须在类名前加上最小化的冲突)。另外......不使用eval()。我应该把代码写成:
$cls = 'MyCls' . basename(__FILE__);
Class $cls extends Object
{
...
}
答案 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()
来加载你喜欢的类,你的代码将知道如何找到它。