ホームページ  >  記事  >  バックエンド開発  >  PHP の静的メソッド呼び出しから拡張クラスのクラス名を取得する方法

PHP の静的メソッド呼び出しから拡張クラスのクラス名を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 21:29:29934ブラウズ

How to Get the Classname of an Extended Class from a Static Method Call in PHP?

拡張 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。