2017-01-04 5 views
0

私はクラス名を保持する変数を持っています。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::do_something_else()を使用することができます

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

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

または使用してcall_user_func()。

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

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

出力PHP7のCalled bar

作品。

+0

答えが分かりましたが、私はphp5.5を使用していますが、これはうまくいきません。私はタグでこれを示していたが、私の質問自体ではなかった。これをクリアするために質問を編集します。ありがとう:) –

関連する問題