PHPのアクセス修飾子について 【初級編 第40回】
クラス
前回に引き続き今回もクラスについて記述していきたいと思います。
アクセス修飾子
アクセス修飾子はクラスの中で使用されるメンバ変数やメンバメソッドを宣言する際に使用します。
具体的には下記のようにして記述します。
1 2 3 4 5 6 | class クラス名{ アクセス修飾子名 メンバ変数名; アクセス修飾子名 メンバメソッド名(){ メソッドの処理; } } |
アクセス修飾子には以下の3種類があります。
public
private
protected
public を指定するとどこからでもアクセスすることができます。
protected を指定するとそのクラス内と派生クラス内からのみアクセスできます。
private を指定するとそのクラス内からのみアクセスできます。
public
public を指定して宣言すると、クラスの中からとクラスの外側からも
アクセス可能なメンバ変数、メンバメソッドになります。
下記では public 宣言したメンバ変数に外部からアクセスしています。
1 2 3 4 5 6 7 8 9 10 | namae = "watanabe" ; $obj1 ->hanasu(); class hito{ public $namae ; function hanasu(){ echo "私は $this->namae です。" ; } } ?> |
結果は以下のようになります。
private
privateは同じクラス内の中だけで使用可能なメンバ変数を用いる際に使用します。
先ほどの public を private に変更すると、クラス外からはアクセスができなくなってしまいます。
そのため何も表示されずエラーになります。
1 2 3 4 5 6 7 8 9 10 | namae = "watanabe" ; $obj1 ->hanasu(); class hito{ private $namae ; function hanasu(){ echo "私は $this->namae です。" ; } } ?> |
結果は以下のようになり表示できませんでした。
その他アクセス修飾子について
アクセス修飾子を省略した場合は、publicを指定したものとみなされます。
また PHP4では varという修飾子がありましたが、これは publicと同じアクセス範囲になります。
こうしてアクセス範囲を定義することによりクラス外部からのアクセスを制限したりすることができます。
こういった機能を カプセル化 と呼んでいます。
protected については派生クラスの説明をしてから記述したいと思います。