[PHP]クラスの基礎 メンバ変数とメンバ関数

大規模なPHPプログラムでは必須になってくる Class なのですが、
今ひとつピンとこないので基礎からおさらいしてみようと思います。

クラスはプロパティ(メンバ変数)とメソッド(メンバ関数)を持ち、
複数の関数をひとつのグループにまとめることができます。

メンバ変数はクラス内のメンバ関数で共有して利用できる変数で、
アクセス権によって3種類に分類されます。

「public」はクラスの中でも外でも利用できます。
具体的には下記のように使います。

<?php
class Test{
    public $foo = 123;
}

$test = new Test();
echo $test->foo;

「private」はそのクラス内でしか利用できません。
上のソースの public を private に変えてみるとエラーが出るのがわかります。
private は次のように用います。

<?php
class Test{
    private $foo = 123;

    function abc(){
        echo $this->foo;
    }
}

$test = new Test();
$test->abc();

「$this」って何?と思われるかもしれませんが、これはオブジェクト自身を指す変数です。
「echo $foo;」のようにはできないので気をつけて下さい。

3つ目は「protected」です。
こちらもクラス内でしか使えませんが、継承した子クラスからはアクセスできる権限です。

<?php
class Test{
  protected $foo = 123;
}

class Example extends Test {
  function abc(){
    echo $this->foo;
  }
}

$example = new Example();
$example->abc();

子クラスは「class 子クラス名 extends 親クラス {}」の形で定義します
子クラスは親クラスのすべてのメソッドを受け継ぐ(継承)ので、子クラスの中でも
親クラスで定義したメソッドを利用できます。

「protected」は子クラスからでもアクセスできるのに対して、
「private」はそのクラス内でしか利用できないので、上のソースを「private」に
書き換えるとエラーが発生します。