Подтвердить что ты не робот

Может ли PHP создать экземпляр объекта из имени класса в виде строки?

Возможно ли, чтобы PHP создавал объект из имени класса, если имя класса хранится в строке?

4b9b3361

Ответ 1

Да, определенно.

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

Ответ 2

Да, это:

<?php

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

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

?>

Ответ 3

Вы можете выполнять динамический вызов, сохраняя свои имена (имена)/методы в хранилище, такие как база данных. Предполагая, что класс устойчив к ошибкам.

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.

Ответ 4

Статический:

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