k01ken’s b10g

He110 W0r1d!

PHPのclassについて

開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+PHP 7.1.7。

<?php

class A{
	public $value = 3;

	public function t(){
		return $this->value;
	}

	public function m($i){
		return $i * $i;
	}
}

$a = new A();
echo $a->value; // 3
echo $a->t(); // 3
echo A::m(5); // 25

?>

■やってみて分かったこと
・クラス内の変数部分をプロパティと呼び、関数部分をメソッドと呼ぶ。
・メソッドはインスタンスを経由で呼び出す方法と、クラス名::メソッド名で呼び出す方法(静的メソッド)がある。
・静的メソッドではプロパティを呼び出せない。(クラス名::プロパティ名のように)また、プロパティを内部で呼び出すメソッドも静的メソッドのやり方では呼び出せない。
・プロパティ部分のpublic $value = 3のpublicを除くと『Parse error: syntax error, unexpected '$value' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST)』というエラーが発生する。
・メソッド部分のpublic function t()のpublicを除いても動作に問題はない。
・プロパティはメソッド内で、『$this->プロパティ名』で呼び出すことができる。インスタンスメソッドだと呼び出せるが、静的メソッドだと『Fatal error: Uncaught Error: Using $this when not in object context』というエラーが発生する。
・クラスのインスタンスを関数の引数として渡すことができて、かつ、その関数内で、インスタンスを経由して、プロパティやメソッドにアクセスすることもできる。

参考リンク
PHP: クラスの基礎 - Manual