如果类名存储在字符串中,在PHP中是否可以从类名实例化对象?
Answers:
是的,当然。
$className = 'MyClass';
$object = new $className;
也是静态的:
$class = 'foo';
return $class::getId();
您可以通过将类名/方法存储在诸如数据库之类的存储中来进行一些动态调用。假设该类对错误具有弹性。
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服务。