PHP OOP後の遅延静的バインディング

*文
リリース: 2023-03-18 15:40:02
オリジナル
1388 人が閲覧しました

この記事では主にPHPオブジェクト指向の静的バインディング後の関数を紹介します。この記事では、主に継承スコープ内で静的に呼び出されたクラスを参照する問題を解決するために使用される、PHP の後期静的バインディング機能を紹介します。お役に立てれば幸いです。

この記事では、PHP の後期静的バインディング関数を紹介します。これは主に、継承スコープ内で静的に呼び出されたクラスを参照する問題を解決するために使用されます

まず次の例を見てください:

class Person
{
 
    public static function status()
    {
        self::getStatus();
    }
 
    protected static function getStatus()
    {
        echo "Person is alive";
    }
 
}
 
class Deceased extends Person
{
 
    protected static function getStatus()
    {
        echo "Person is deceased";
    }
 
}
 
Deceased::status(); //Person is alive
ログイン後にコピー

明らかに、結果は私たちが期待したものではありません。これは、self:: が実行中のクラスではなく、定義されているクラスに依存しているためです。この問題を解決するには、継承されたクラスの status() メソッドをオーバーライドすることができます。より良い解決策は、PHP 5.3 に遅延静的バインディングの機能を追加することです。

class Person
{
 
    public static function status()
    {
        static::getStatus();
    }
 
    protected static function getStatus()
    {
        echo "Person is alive";
    }
 
}
 
class Deceased extends Person
{
 
    protected static function getStatus()
    {
        echo "Person is deceased";
    }
 
}
 
Deceased::status(); //Person is deceased
ログイン後にコピー

static:: が現在のクラスを指していないことがわかります。実際、これは実行時に計算され、最終クラスのすべてのプロパティが強制的に取得されます。

したがって、今後は self:: を使用せず、static:::::

を使用することをお勧めします。指向性finalクラスとfinalメソッド

PHPオブジェクト指向詳細解説_PHPチュートリアル

以上がPHP OOP後の遅延静的バインディングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!