可以从PHP类的字符串形式的名称实例化一个对象?(Can PHP instantiate an ob

2019-07-04 17:43发布

是否有可能在PHP实例从一个类的名称的对象,如果类名称存储在一个字符串?

Answer 1:

是的,绝对。

$className = 'MyClass';
$object = new $className; 


Answer 2:

是的,它是

<?php

$type = 'cc';
$obj = new $type; // outputs "hi!"

class cc {
    function __construct() {
        echo 'hi!';
    }
}

?>


Answer 3:

静太:

$class = 'foo';
return $class::getId();


Answer 4:

您可以通过存储你的类名(一个或多个)在存储/方法,如数据库做一些动态调用。 假设类是有弹性的错误。

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查询你的课程,如果达到你的想象力的自动化水平。

$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服务。



文章来源: Can PHP instantiate an object from the name of the class as a string?