PHP可以实例化类的名称作为一个string的对象?

如果类名存储在string中,是否有可能在PHP中实例化一个类名称的对象?

是的,绝对。

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

是的,这是

 <?php $type = 'cc'; $obj = new $type; // outputs "hi!" class cc { function __construct() { echo 'hi!'; } } ?> 

您可以通过将类名/方法存储在存储器(如数据库)中来执行一些dynamic调用。 假设这个类是错误的弹性。

 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 

然后在你的代码中使用数据库返回的string作为类和方法的名字。 你甚至可以存储你的类的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}(); } } 

我使用这种方法来创buildREST Web服务。

也是静态的:

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