拡張 PHP クラスの静的呼び出しからクラス名を取得する
PHP でクラスを拡張すると、プロパティを継承するサブクラスを作成できますおよびその親クラスのメソッド。ただし、親クラスの静的メソッドは、拡張クラスのクラス名に直接アクセスできません。
問題:
静的メソッドの呼び出し時に拡張クラスのクラス名を取得する
例:
<code class="php">class Action { function n() {/* something */} } class MyAction extends Action {/* some methods here */}</code>
MyAction::n() を呼び出すと、「MyAction」が返されます。ただし、Action クラスの __CLASS__ は「Action」のみを返します。
遅延静的バインディング (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(); //displays MyAction</code>
または:
静的メソッドが静的でない場合は、メソッド内で get_class($this) を使用して、クラス名を取得します。
以上がPHP の静的メソッド呼び出しから拡張クラスのクラス名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。