首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP可以从类名实例化一个对象为字符串吗?

PHP可以从类名实例化一个对象为字符串吗?
EN

Stack Overflow用户
提问于 2009-09-04 03:21:46
回答 3查看 35K关注 0票数 95

在PHP中,如果类名存储在字符串中,是否可以从类名实例化对象?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-04 03:29:18

是的,当然。

代码语言:javascript
复制
$className = 'MyClass';
$object = new $className; 
票数 158
EN

Stack Overflow用户

发布于 2017-07-12 23:22:02

也是静态的:

代码语言:javascript
复制
$class = 'foo';
return $class::getId();
票数 3
EN

Stack Overflow用户

发布于 2017-08-18 14:23:30

您可以通过将您的类名/方法存储在诸如数据库之类的存储中来执行一些动态调用。假设类对错误是有弹性的。

代码语言:javascript
复制
sample table my_table
    classNameCol |  methodNameCol | dynamic_sql
    class1 | method1 |  'select * tablex where .... '
    class1 | method2  |  'select * complex_query where .... '
    class2 | method1  |  empty use default implementation

等等。然后在您的代码中使用数据库返回的字符串作为类和方法的名称。您甚至可以为您的类存储sql查询,如果自动化程度达到您的想象的话。

代码语言:javascript
复制
$myRecordSet  = $wpdb->get_results('select * from my my_table')

if ($myRecordSet) {
 foreach ($myRecordSet   as $currentRecord) {
   $obj =  new $currentRecord->classNameCol;
   $obj->sql_txt = $currentRecord->dynamic_sql;
   $obj->{currentRecord->methodNameCol}();
}
}

我使用此方法来创建REST web服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1377052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档