0

我想使用 PHP 中的变量来定义类名。这可能吗?

让我解释。

我是一个小型自定义 CMS,它允许最终用户为表名配置前缀。因此用户可以定义前缀,例如“rc_”。问题是,我有很多使用表名作为类的模型。因此,例如,如果我的一张表是rc_posts,则模型将被调用

class MyModel_Rc_posts extends MyModelController {
         // code here
}

有没有办法使用 PHP 中的变量来定义一个类,而不使用eval()例如:

class MyModel_{$PREFIX}posts extends MyModelController {
// code here
}

我想避免 eval 的原因是因为其中一些类可能会变得很长。建议表示赞赏。

4

1 回答 1

3

看看class_alias - 它应该可以帮助您使它更具可读性!

只是为了说明这一点:您使用“正常”名称创建您的类,然后根据需要添加别名。别名可以是任何字符串,这包括存储在变量中的字符串。

编辑

虽然我认为,这class_alias()是要走的路,但这里有一个例子,说明如何在没有它的情况下做到这一点。

来自您的 OQ:

class MyModel_Rc_posts extends MyModelController {
         // code here
}

现在

eval("class MyModel_{$PREFIX}posts extends MyModel_Rc_posts {};");

应该做一些非常相似的事情class_alias()

如果您以后需要,可能需要进行此操作get_class()-在别名类上,它将为您提供原始(静态)类名,而不是别名。使用丑陋eval()/extends技巧,您可以获得动态名称。

于 2012-09-01T18:26:46.157 回答