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