その昔、時代に流されるように買って、開いて、挫けた本がある。
その名も「Java狂想曲」

まあないだろうなとググってみたらやっぱり絶版だった。
Javaに挫けたわけはクラスだと継承だのと色々あるんだけれど、一番キーだったのは全盛だったWindowsのクラスライブラリにある。

両方がゴチャゴチャになって理解の範疇を超えてしまったというのが本音だったりする。
その辺で終わりになるはずだったのに今になって再びチョロチョロと書いてしまっているわけ(笑)

と前置きが長くなったけれど、そんな本に参考に出てたクラスをちょいとPHP版に書き換えてみた。

学校の生徒を表したクラス

class Student {
    protected $name;
    
    public function __construct() {
        $this->name = "";
    }
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function say() {
        echo "My name is " . $this->name . ".<br/>\n";
    }
}

学級を表したクラス
コンストラクタあたりに多少無理した感が出ている。

require_once 'Student.php';

class ClassRoom {
    protected $student = [];
    protected $maxStudent;
    
    public function __construct() {
        // 
    }
    
    public function add($n, $name) {
        $this->student[$n] = new Student();
        echo "Student[" . $n . "]=" . $name . "<br/>\n";
        $this->student[$n]->setName($name);
    }
    
    public function say() {
        echo "Here's the students:<br/>\n";
        $i = 0;
        foreach ($this->student as $key => $value) {
            $value->say();
            $i++;
        }
        echo "Number of Student :" . $i . ".<br/>\n";
    }
}

PHPだと全部ひとまとめに書けるのだけど、あえてjava風に分けてみた。
実行部分はこんな感じ。
最初にクラスの人数を指定するあたりが微妙に違うかな。

$classroom = new ClassRoom(10);
$classroom->add(0, "大矢真那");
$classroom->add(1, "須田亜香里");
$classroom->say();

実行結果は…

Student[0]=大矢真那
Student[1]=須田亜香里
Here's the students:
My name is 大矢真那.
My name is 須田亜香里.
My name is .
My name is .
My name is .
My name is .
My name is .
My name is .
My name is .
My name is .

PHP風に書き換えたバージョンもアップしようかと思ったのだけれど、実はバックアップ用NASが故障してしまいサルベージ作業にリソースを食われて新しいアプリどころの話では無い状態なのだ。