PHPのおさらい5 static

<!DOCTYPE html>
<html lang="ja">
<body>
	<p><?php echo "インスタント化せずにクラスを使う static" ?></p>
</body>
</html>

<?php
/*---------------------
static
クラスをインスタント化せずにクラスを使う事ができる、プロパティやメソッド。
ただし、インスタンスを使用しないので、コンストラクタが使用できない。
this->nameなどは使用できない。
---------------------*/
class Roster{
	public $name;
	public static $count=0;//スタティックプロパティ
	
	public function __construct($name){
		$this->name =$name;
		//selfはこのクラス内からプロパティまたはメソッドにアクセスする
		self::$count++;
	}
	public function hallow(){//関数(メソッド)
		echo $this->name."さん<br>";
	}
	//staticメソッド
	public static function greeting(){
		echo "こんにちは";
	}
}

//継承
class Subroster extends  Roster{

	public function hallow(){
		//親クラスのプロパティまたはメソッドにアクセス
		echo parent::greeting();
		echo "subclassの".$this->name."さん<br>";		
	}
}


//staticの実行 クラス名+::+メソッド名
Roster::greeting(); //->こんにちは

//インスタンス化した数を数える。インスタンス化する度にcountを増加
$ichiro =new Roster('ichiro');
$subro =new Roster('subro');
$jiro=new Subroster('jiro');

echo Roster::$count;

$jiro->hallow();//名前を呼ぶ

$ichiro->greeting();//スタティックメソッドにはアクセス可能
//↓インスタンス化されたクラスオブジェクトから
//スタティックプロパティにアクセスできない。
$ichiro->count;

//////////////////////
表示結果↓

インスタント化せずにクラスを使う static

こんにちは3こんにちはsubclassのjiroさん
こんにちは
Notice: Undefined property: Roster::$count in index5.php on line 57