ホームページ  >  記事  >  バックエンド開発  >  PHPの遅延静的バインディングの詳細説明

PHPの遅延静的バインディングの詳細説明

小云云
小云云オリジナル
2018-03-26 11:16:171297ブラウズ

古いバージョンの PHP では、return new self() を使用してこのクラスのインスタンスを返しますが、このメソッドには大きな欠点があります。つまり、self は呼び出しコンテキストではなく解析コンテキストを参照します。 この記事では主に PHP の遅延静的バインディング static について詳しく説明します。お役に立てれば幸いです。

abstract class father { 

    public static function create() { 

        return new self(); 

    } 
} 
class son1 extends father { 
} 
son1::create();

つまり、上記のコードで create() メソッドを呼び出しているサブクラスは、実際には親クラスのインスタンスを返します。これは、self が呼び出された場所ではなく定義された場所を指しているためです。親クラスは抽象クラスであるため、この段落のコードは致命的なエラーを報告します。

遅延静的バインディングは、PHP 5.3 以降、static キーワードを使用して導入されました。 <code> <br>

abstract class father { 

    public static function create() { 

        return new static(); 

    } 
} 
class son1 extends father { 
} 
son1::create();

self を static に変更すると、static は定義されたクラスではなく呼び出されたクラスを指すため、通常どおり実行されます。

非静的コンテキストから呼び出された場合でも、静的メソッドの識別子として static を使用することもできます。これについては後で書きます。

関連する推奨事項:

phpは遅延静的バインディングを実装します

php遅延静的バインディングの例の詳細な説明

php遅延静的バインディングとは何ですか?遅延静的バインディングのサンプルコードを詳しく解説

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

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