ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向後の静的バインディング関数入門、オブジェクト指向関数入門_PHPチュートリアル

PHPオブジェクト指向後の静的バインディング関数入門、オブジェクト指向関数入門_PHPチュートリアル

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

PHPオブジェクト指向の後期静的バインディング関数の紹介、オブジェクト指向関数入門

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

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

コードをコピーします コードは次のとおりです:
クラス人
{

パブリック静的関数 status()
{
self::getStatus();
}

保護された静的関数 getStatus()
{
echo "人は生きています";
}

}

class Deceased は Person を拡張します
{

保護された静的関数 getStatus()
{
echo "人は亡くなっています";
}

}

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

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

コードをコピーします コードは次のとおりです:
クラス人
{

パブリック静的関数 status()
{
static::getStatus();
}

保護された静的関数 getStatus()
{
echo "人は生きています";
}

}

class Deceased は Person を拡張します
{

保護された静的関数 getStatus()
{
echo "人は亡くなっています";
}

}

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

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

そのため、今後は self:: を使用せず、static:::を使用することをお勧めします

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