PHPクラスのアクセス制限。privateとpublicでクラス内部のデータを保護!

PHP クラスweb制作

前回は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にはよく見かける基本的な構文などの他にも、いくつもの細かい機能が準備されています。厄介ですが出てくるたびに確認することで、少しずつ覚えていきたいですね。