拡張 PHP クラスの静的呼び出しからクラス名を取得する
PHP の世界では、多くの場合、静的呼び出しからクラス名を決定する必要があります。関数呼び出し、特に拡張クラスを操作する場合。次のシナリオを考えてみましょう。
<code class="php">class Action { function n() {/* some implementation */} } class MyAction extends Action {/* further implementation */}</code>
この状況では、MyAction::n(); を呼び出します。クラス名として「MyAction」を返す必要があります。ただし、__CLASS__ 変数は親クラス名 (「アクション」) のみを返します。
後期静的バインディング (PHP 5.3 ):
PHP 5.3 では後期静的バインディングが導入されました。これにより、実行時にターゲット クラスを解決できるようになります。この機能により、get_called_class() 関数を使用して呼び出されたクラスを特定できるようになります。
<code class="php">class Action { public static function n() { return get_called_class(); } } class MyAction extends Action { } echo MyAction::n(); // Output: MyAction</code>
代替アプローチ (PHP 5.3 より前):
PHP より前5.3 では、代替ソリューションは非静的メソッドと get_class() 関数の使用に依存しています。
<code class="php">class Action { public function n(){ return get_class($this); } } class MyAction extends Action { } $foo = new MyAction; echo $foo->n(); // Output: MyAction</code>
get_class() 関数はインスタンスを取得するため、このアプローチは非静的メソッドでのみ機能することに注意してください。引数としてクラスの値を指定します。
以上が拡張 PHP クラスの静的メソッド呼び出しからクラス名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。