クラスへのアクセス権
クラス内のプロパティ・メソッドへのアクセス権の種類は、「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のメソッドを使うのが基本なのかなぁと