14

クラスの静的メソッドを呼び出す必要がありますが、インスタンスではなくクラス名しかありません。私はこのようにしています。

$class = new "ModelName";
$items = $class::model()->findAll();

私のコンピューターでは動作しますが、サーバーに移動すると がスローunexpected T_PAAMAYIM_NEKUDOTAYIMされるため、実際にはモデルがメソッドではなく変数であると想定していると思います。

PS: それが役立つなら、それは Yii フレームワークです。したがって、find() 関数を呼び出す別の方法があれば、それで問題ありません。

前もって感謝します

4

1 に答える 1

23

これは、この構文がサポートされていない 5.3.0 より前のバージョンの PHP がサーバーで実行されているためです。

スコープ解決演算子に関するドキュメントから:

PHP 5.3.0 以降では、変数を使用してクラスを参照できます。変数の値をキーワードにすることはできません (例: self、parent、および static)。

いずれにせよ、いつでも使用できますcall_user_func

$class = "ModelName"; // the "new" in your example was a typo, right?
$items = call_user_func(array($class, 'model'))->findAll();
于 2012-07-10T10:08:11.283 に答える