演習課題「クラスメソッドを呼び出そう」
右のコードには、Greetingクラスに、say_helloメソッドが定義してあります。
このメソッドをクラスメソッドとして呼び出してください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
hello paiza
#07:クラス変数とクラスメソッドを使おう
ここでは、PHPのクラス変数とクラスメソッドを使います。
クラス変数は、オブジェクトで共通して利用できる変数です。
そして、クラスメソッドを使うと、オブジェクトを作らずにメソッドを呼びだすことができるようになります。
クラス全体の情報を扱う際の情報です。
クラス変数・クラスメソッドでは、変数名・メソッド名にstaticを付けて定義します。
クラス変数・クラスメソッドを呼び出す時には、クラス名に続けてコロン2つ(::)その後変数やメソッドを記述します。
<?php
// クラス変数とクラスメソッド
class Player {
public $myName;
private static $charactorCount = 0;
public function __construct($name) {
$this->myName = $name;
Player::$charactorCount++;
echo Player::$charactorCount."番目のプレイヤー、".$this->myName."が登場した。\n";
}
public static function charactorCount() {
return Player::$charactorCount;
}
public function attack($enemy) {
echo $this->myName."は、".$enemy."を攻撃した!\n";
}
}
class Wizard extends Player {
public function __construct() {
parent::__construct("魔法使い");
}
private function spell() {
echo "シャラララーン\n";
}
public function attack($enemy) {
$this->spell();
echo $this->myName."は、".$enemy."に炎を放った!\n";
}
}
echo "=== パーティーでスライムと戦う ===\n";
$hero = new Player("勇者");
// $hero->attack("スライム");
$warrior = new Player("戦士");
$wizard = new Wizard();
$party = [$hero, $warrior, $wizard];
foreach ($party as $player) {
$player->attack("スライム");
}
// $wizard->spell();
echo Player::charactorCount()."人で、スライムを攻撃した";
?>
- PHP のクラスメソッド定義まとめ - Qiita
http://qiita.com/Linda_pp/items/b7135ae1f0def6058c6c
- インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(PHPの場合) | mah365
http://blog.mah-lab.com/2014/11/13/instance-method-and-class-method-with-ruby/