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();