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