この記事では、PHP における static キーワードの定義、late binding、self キーワードとの違いを中心に紹介しますので、興味のある方は参考にしていただければ幸いです。
概要
デザイン パターンを学習しています。以前にシングルトン パターンに関する記事がありましたが、この記事を読み直してみました。静的キーワードをよく理解してください。もう一度見直してください。
静的キーワード
PHP の静的メンバーとメソッドの特徴は次のとおりです。
1. 静的メンバーには、クラスですが静的メソッドは問題ありません。
2. 静的メンバーには -> 演算子を使用してアクセスできません。
3. 静的メソッドのスコープ内では、$this キーワードを使用できません。つまり、静的メソッドでは通常のメンバー変数にアクセスできません。
4. 静的メンバーとメソッドには、オブジェクトをインスタンス化せずに、クラス名を介して直接アクセスできます。
後期静的バインディング
PHP 5.3.0 以降、PHP には後期静的バインディングと呼ばれる機能が追加されました。これは継承スコープで使用されます。 静的に呼び出されるクラスへの内部参照。
正確に言うと、遅延静的バインディングの動作原理は、前の「非転送呼び出し」(非転送呼び出し) にクラス名を格納することです。静的メソッド呼び出しを行う場合、クラス名は明示的に指定されたもの (通常は :: 演算子の左側) であり、非静的メソッド呼び出しを行う場合は、オブジェクトが属するクラスです。いわゆる「転送呼び出し」とは、self::、parent::、static::、および forward_static_call() の方法で行われる静的呼び出しを指します。 get_called_class() 関数を使用すると、呼び出されたメソッドのクラス名を取得でき、static:: はそのスコープを示します。
この機能を理解するには、マニュアルの例を参照してください。
self vs static
デモを使用するself と static の違いを直接説明します。
自己例:
コードは次のとおりです:
<?php class Vehicle { protected static $name = 'This is a Vehicle'; public static function what_vehicle() { echo get_called_class()."\n"; echo self::$name; } } class Sedan extends Vehicle { protected static $name = 'This is a Sedan'; } Sedan::what_vehicle();
プログラムの出力:
コードは次のとおりです:
SedanThis is a Vehicle
静的な例:
コードは次のとおりです:
<?php class Vehicle { protected static $name = 'This is a Vehicle'; public static function what_vehicle() { echo get_called_class()."\n"; echo static::$name; } } class Sedan extends Vehicle { protected static $name = 'This is a Sedan'; } Sedan::what_vehicle();
プログラムの出力:
コードは次のとおりです:
Sedan This is a Sedan
要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。
関連する推奨事項:
Snoopy クラスを使用して HTML ファイルを解析する方法
php post をシミュレートします リクエストの 3 つの一般的な使用法
以上がPHPにおけるstaticキーワードの定義、遅延バインディング、selfキーワードとの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。