クラス名が文字列に格納されている場合、PHPでクラス名からオブジェクトをインスタンス化することは可能ですか?
クラス名が文字列に格納されている場合、PHPでクラス名からオブジェクトをインスタンス化することは可能ですか?
回答:
うん、間違いなく。
$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}();
}
}
このメソッドを使用して、RESTWebサービスを作成します。