クラスの静的メンバーは、一般的なクラス メンバーとは異なります。静的メンバーはオブジェクトのインスタンスとは関係がなく、クラスによってカプセル化される関数とデータを実装するためにのみ使用されますが、これには含まれません。静的メンバーには、静的メソッドと静的プロパティが含まれます。
静的プロパティには、クラスにカプセル化されるデータが含まれており、実際には、クラスのすべてのインスタンスで共有できます。固定クラスに属し、アクセス方法を制限するクラスの静的プロパティ 関数
のグローバル変数に非常によく似ています。 次の例では、静的プロパティ Counter::$count を使用します。 Counter クラスを使用して参照することはできませんが、この例では、getCount メソッドは Counter::$count の代わりに self::$count を返します。
静的メソッドは、クラスがカプセル化する必要がある関数を実装しており、特定のオブジェクトに依存しない静的メソッドは、クラスのプロパティに完全にアクセスでき、また、
例 6.3 では、getCount は -> で呼び出される通常のメソッドですが、このメソッドは使用されませんが、getCount はこの変数を作成します。場合によっては、有効な object がない場合でも、この変数を呼び出す必要があります。その場合、PHP は、オブジェクト
例 6.7 は、getCount を静的メソッドに変更する 6.3 から派生したもので、Static キーワードは、インスタンスが getCount を呼び出すのを防ぐことはできませんが、これを使用すると、PHP はこの変数をメソッド内に作成しません。 -> を呼び出すと、エラーが発生します。
//6.3 例は、セクション 4 -- コンストラクターとデストラクターの例を参照してください (前の記事を参照)。
//静的メソッドと通常のメソッドの違い。
これが作成されるかどうかを判断することで、静的に呼び出されるか非静的に呼び出されるかを示すメソッドを作成できます。
クラスでは public static を使用せずに定数プロパティを定義することもできます。定数プロパティは常に静的です。クラスをインスタンス化するオブジェクトのプロパティではなく、クラスのプロパティです。
リスト 6.7 静的メンバー
class Counter
{
private static $count = 0;
const VERSION = 2.0;
function __construct()
{
self: :$count ;
}
関数 __destruct()
{
self::$count--;
静的関数 getCount()
{
return self::$count;
}
};
//インスタンスを作成すると、__construct() が実行されます
$c = new Counter();
//出力 1
print(Counter::getCount(). " < ;br>n");
//クラスのバージョン属性を出力します
print("Version used: " . Counter::VERSION . "
n");
? >