クラスの静的メンバーは一般的なクラス メンバーとは異なります。静的メンバーはオブジェクトのインスタンスとは何の関係も持たず、クラス自体とのみ関係します。静的メンバーは、クラスがカプセル化する関数とデータを実装するために使用されますが、静的メソッドや静的プロパティなどの特定のオブジェクトの関数とデータは含まれません。
静的プロパティには、クラスにカプセル化されるデータが含まれており、クラスのすべてのインスタンスで共有できます。実際、固定クラスに属し、アクセス方法が制限されていることに加えて、クラスの静的プロパティは関数のグローバル変数と非常によく似ています。
次の例では静的プロパティ Counter::$count を使用します。これは Counter クラスに属しており、Counter のインスタンスには属しません。これを使用して参照することはできませんが、self または他の有効な命名式を使用できます。この例では、getCount メソッドは Counter::$count ではなく self::$count を返します。
静的メソッドは、クラスによってカプセル化される必要がある関数を実装し、特定のオブジェクトとは何の関係もありません。静的メソッドは、クラスの属性に完全にアクセスしたり、クラスのインスタンスによってアクセスしたりすることができます。アクセス制限に関係なく、オブジェクト スラングとは何ですか? 前の例では、getCount は -> で呼び出される通常のメソッドですが、メソッドは使用されませんが、PHP は this 変数を作成します。場合によっては、有効なオブジェクトがない場合でも、静的メソッドを使用する必要があります。たとえオブジェクトから呼び出したとしても、PHP はこの変数を静的メソッド内に確立しません。 6.7 では、getCount が 6.3 から Static メソッドに変更されました。
Static キーワード
は、インスタンスが ->
operator
を使用して呼び出すのを防ぐことはできませんが、this-> を使用すると、PHP はこの変数をメソッド内に作成しません。 //6.3 の例は、セクション 4 の例、Constructor と
Destructor
を参照しています (前の記事を参照)。 //static メソッドと通常のメソッドの違い もちろん、static キーワードを使用すれば、静的か非静的に呼び出されるかを示すメソッドを作成できます。呼び出される場合、このメソッドは常に静的になります。
クラスでは定数プロパティを定義することもできます。 public static を使用する必要はなく、
const キーワードを使用するだけです。定数プロパティは常にクラスのプロパティです。クラスのインスタンス化ではなく、オブジェクトのプロパティです。
リスト 6.7 静的メンバー
<?php class Counter { private static $count = 0; const VERSION = 2.0; function construct() { self::$count++; } function destruct() { self::$count--; } static function getCount() { return self::$count; } }; //创建一个实例,则construct()将执行 $c = new Counter(); //输出 1 print(Counter::getCount() . "n"); //输出类的版本属性 print("Version used: " . Counter::VERSION . "n"); ?>
以上がPHPクラスの静的メンバーの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。