phpの覚書

phpの覚え書きを書き溜めていくサイトです

PHP全般

クラスへのアクセス権

投稿日:

クラスへのアクセス権

クラス内のプロパティ・メソッドへのアクセス権の種類は、「public」と「protected」と「private」の3つ

その名の通り「public」はクラスの外部からもアクセス可能で、アクセス権を明示しない時は「public」の扱いになる。

「protected」と「private」はクラス外部からのアクセスは不可で、不用意に値を参照されたくない時とか書き換えられたくない時とか、同一クラス内の限定的な利用が可能。

「protected」と「private」の違いは、「protected」は継承した子クラスでもアクセス出来るのに対して、「private」は定義したクラス内でしかアクセスできない。

class ClsAccess {
    public      $public     = "public <br />";
    protected   $protected  = "Protected <br />";
    private     $private    = "Private <br />";
 
    public function getPropVal() {
        $ret  = $this->public;      // 参照可
        $ret .= $this->protected;   // 参照可
        $ret .= $this->private;     // 参照可 
        return $ret;
    }
}

$insAc = new ClsAccess();
echo $insAc->public; 		    // 参照可
// echo $insAc->protected; 	    // エラー
// echo $insAc->private; 	    // エラー
echo $insAc->getPropVal(); 	    // 同一クラス内のプロパティなので全て参照可
// echo $insAc->protPropVal();  // エラー
// echo $insAc->privPropVal();  // エラー

/* 小クラスへの継承 */
class ClsChildAccess extends ClsAccess {
    public function getPropVal() {
        $ret  = $this->public;      // 参照可
        $ret .= $this->protected;   // 参照可
        // $ret .= $this->private;  // エラー
        return $ret;
    }
}

$insChildAc = new ClsChildAccess();
echo $insChildAc->public;       // 参照可
//echo $insChildAc->protected;  // エラー
//echo $insChildAc->private;    // エラー
echo $insChildAc->getPropVal();      // PublicとProtectedのみ参照可

プロパティは「private」か「protected」で定義しておいて、外部から参照する時は、publicのメソッドを使うのが基本なのかなぁと

-PHP全般
-, , , ,

執筆者:

関連記事

no image

クラスモジュールのstaticプロパティとstaticメソッド

クラスモジュールのstaticプロパティとstaticメソッド staticの識別子を付けたプロパティやメソッドは通常の?(動的な)プロパティやメソッドとは使い方が異なり、インスタンス化せずに呼び出し …

no image

配列の定義・更新・参照・追加・ソート

配列の定義 PHPで配列を定義するには「array()」を使って変数に代入する方法と、変数に[ ]で直接代入する方法がある。 どちらの方法でも、キーなしの配列・キーありの連想配列それぞれ定義可能 // …

no image

スーパーグローバル変数・定数

スーパーグローバル変数・定数 スーパーグローバル変数やスーパーグローバル定数は、プログラム中のどこからでも参照可能な値。 スーパーグローバルに含まれる項目や値は、「$GLOBAL」を参照すると確認でき …

no image

エスケープシーケンスと特殊文字

ダブルクォーテーションやシングルクォーテーションの文字列 PHPで文字列を扱う時はダブルクォーテーション「”」か、シングルクォーテーション「’」で文字列を囲む。 // 文字列は …

no image

マジック定数

マジック定数は特殊な定数で定義不要で参照可能な定数 __LINE__ファイル上の現在の行番号__FILE__ファイルのフルパスとファイル名__DIR__そのファイルの存在するディレクトリ__FUNCT …