2017-01-04 11 views
0

У меня есть переменная, содержащая имя класса.Reference static class method заданное имя класса как строка в PHP5.5

public $modelClass = 'common\models\Notecard'; 

Этот класс имеет статический метод.

public static function do_something() { ... } 

Учитывая эту информацию, я бы назвал статическую функцию. Для не-статических функций, я могу сделать следующее:

$model_name = $this->modelClass; 
$model = new $model_name(); 
$model->do_something_else(); 

ответ

1

Да, это довольно просто: Вы можете просто вызвать функцию из своего экземпляра, например,

$model_name = $this->modelClass; 
$model = new $model_name(); 
$model::do_something(); 

или с помощью call_user_func()

call_user_func([$modelClass, 'do_something']); 
0

Вы можете использовать $model_name::do_something_else().

class foo { 
    public static function bar() { 
     echo "Called bar"; 
    } 
} 

$fname = "foo"; 
$fname::bar(); 

Выходы Called bar

Работы по php7.

+0

Я ценю ответ, но я использую php5.5, и это не сработает. Я указал это в тегах, но не в самом вопросе. Изменит мой вопрос, чтобы прояснить это. Благодаря :) –