phpの覚書

phpの覚え書きを書き溜めていくサイトです

PHP全般

クラスモジュールのstaticプロパティとstaticメソッド

投稿日:

クラスモジュールのstaticプロパティとstaticメソッド

staticの識別子を付けたプロパティやメソッドは通常の?(動的な)プロパティやメソッドとは使い方が異なり、インスタンス化せずに呼び出しする。使い方は「クラス名::プロパティ または メソッド 」となる。

class ClsSttTest{

	public static $iStt = 0;			// STATIC プロパティ
	static function funcStt(){			// STATIC メソッド
		ClsSttTest::$iStt += 1;
		return "This is Static Function" . ClsSttTest::$iStt;
	}
	public $iDyn = 0;					// 動的プロパティ
	public function funcDyn(){			// 動的メソッド
		$this->iDyn += 1;
		return "This is Dynamic Function" . $this->iDyn;
	}
}

// 動的なプロパティやメソッドはインスタンス化してから呼び出し
$itStt1 = new ClsSttTest();		// インスタンス化
echo $itStt1->funcDyn();		// This is Dynamic Function1
echo "<br />";
// staticなプロパティやメソッドはインスタンス化せずに「クラス名::プロパティ or メソッド」で呼び出し
echo ClsSttTest::funcStt();		// This is Static Function1
echo "<br />";


// staticプロパティはクラスに属するので値を保持したままとなる
$itStt2 = new ClsSttTest();		// インスタンス化
echo $itStt2->funcDyn();			// This is Dynamic Function1
echo "<br />";
echo ClsSttTest::funcStt();		// This is Static Function2
echo "<br />";

staticなプロパティはインスタンスとは関係なくクラスごとに値を保持。なので、新しいインスタンスを生成しても元の値が保持されてる事を忘れないように。大丈夫だと思うけど^^;

ちなみに、小クラスのstaticプロパティは親クラスとは別のプロパティになるみたい。親子でも別クラスだからね~と納得。

-PHP全般
-, , , , ,

執筆者:

関連記事

no image

マジック定数

マジック定数は特殊な定数で定義不要で参照可能な定数 __LINE__ファイル上の現在の行番号__FILE__ファイルのフルパスとファイル名__DIR__そのファイルの存在するディレクトリ__FUNCT …

no image

クラスの定義とインスタンス化

クラスの定義とインスタンス化 PHPでクラスを定義する時はclassキーワードを使って「class クラス名 { プロパティとかメソッドとか・・・ }」という感じ 定義したクラスをインスタンス化する時 …

no image

エスケープシーケンスと特殊文字

ダブルクォーテーションやシングルクォーテーションの文字列 PHPで文字列を扱う時はダブルクォーテーション「”」か、シングルクォーテーション「’」で文字列を囲む。 // 文字列は …

no image

配列の定義・更新・参照・追加・ソート

配列の定義 PHPで配列を定義するには「array()」を使って変数に代入する方法と、変数に[ ]で直接代入する方法がある。 どちらの方法でも、キーなしの配列・キーありの連想配列それぞれ定義可能 // …

no image

クラスへのアクセス権

クラスへのアクセス権 クラス内のプロパティ・メソッドへのアクセス権の種類は、「public」と「protected」と「private」の3つ その名の通り「public」はクラスの外部からもアクセス …