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

小云云
リリース: 2023-03-22 10:02:01
オリジナル
1176 人が閲覧しました

古いバージョンの 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 キーワードを使用して導入されました。

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

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