前回はPHPのクラスについてみてきました。
PHPのクラスを扱う3ポイント!オブジェクトの作成、メンバ変数・メソッドの利用方法
以前PHPのコードをまとめておく機能「関数」を紹介しました。 今回は変数と関数をまとめておく「クラス」を紹介します。 クラスには大きく分けて3つのポイントがあります。1つずつ見ていきましょう。 PHPクラスの定義 ま...
普通に使うにはこれだけでも十分ですが、今回はもう少し深いところ「アクセス制限」を見てみたいと思います。プログラムが複雑になってくるとこうした細かい機能も使う必要が出てきます。
クラス内のメンバ変数・メソッドへのアクセス制限
privateでクラス外部からのアクセスを拒否
クラス内のメンバ変数・メソッドは、値を代入したりメソッドを使用したりと基本的にクラス外部から自由にアクセスできます。
これはこれで便利なんですが、その分誤って値を代入してしまうなどの不具合が起きることもあるわけです。それを防ぐため、メンバ変数にクラス外部からアクセスできなくするのがprivateです。
大抵メンバ変数にはアクセス制限をかけておきます。
class クラス名 { private $変数名 = 値; function 関数名(引数){ プログラム内容; } }
このようにメンバ変数を定義する際に先頭にprivateをつけることで、クラス外部からのアクセスが出来なくなります。
publicでクラス外部からのアクセスを許可
メンバ変数に値が代入できなくなってしまっては困ります。privateとは逆にクラス外部からのアクセスを許可するのがpublicです。
privateとpublic。これら2つはアクセス指定子と呼ばれていますが、アクセス指定子を記述しない場合はpublicと同じ意味合いになります。
使用方法はprivateと同じです。
class クラス名 { private $変数名 = 値; public function 関数名(引数){ プログラム内容; } }
カプセル化
上記のコードは、メンバ変数にはprivateによりクラス外部からのアクセス制限をかけ、メソッドはpublicによりアクセスを許可しています。
これによりクラス内部に誤ったデータが入ることを避けつつ、メソッドのみを自由に使うことが出来るようになりました。これがカプセル化です。
最後に
簡単なプログラムならアクセス制限をする必要もないかもしれません。
PHPにはよく見かける基本的な構文などの他にも、いくつもの細かい機能が準備されています。厄介ですが出てくるたびに確認することで、少しずつ覚えていきたいですね。