ホームページ >バックエンド開発 >PHPチュートリアル >PHPの後期静的バインディング機能の紹介 オブジェクト指向_PHPチュートリアル

PHPの後期静的バインディング機能の紹介 オブジェクト指向_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:19869ブラウズ

PHPオブジェクト指向のlate staticバインディング関数の紹介

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

まず、次の例を見てみましょう:

コードは以下の通りです:

クラスの人

{

パブリック静的関数 status()

{

self::getStatus();

}

保護された静的関数 getStatus()

{

エコー「人は生きている」;

}

}

class Deceased は person を拡張します

{

保護された静的関数 getStatus()

{

エコー「人は亡くなった」;

}

}

死亡者::status() //人は生きています

;

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

コードをコピーします。コードは次のとおりです:

クラスの人

{

パブリック静的関数 status()

{

static::getStatus();

}

保護された静的関数 getStatus()

{

エコー「人は生きている」;

}

}

class Deceased は person を拡張します

{

保護された静的関数 getStatus()

{

エコー「人は亡くなった」;

}

}

Deeased::status() //人は亡くなっています

;

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

そのため、self::はもう使わず、static::を使うことをお勧めします

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1001667.html技術記事 PHPオブジェクト指向のlate staticバインディング機能の紹介 この記事では、主に継承スコープ内で静的に呼び出されたクラスを参照する問題を解決するために使用されるPHPのlate staticバインディング機能について紹介します。 まずは見てみましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。