オブジェクト指向 アクセス権
アクセス権
プロパティ、メソッドの前につけることによって
外からアクセスできる範囲をしてすることができる
アクセス権を指定する理由
プロパティへの値を渡す方法は参照渡し
参照渡しとは関数に実際の変数を代入して値を変える方法
オブジェクト指向のインスタインスも参照渡しのため
アクセス権を指定しないと
無意識的にでも元の値を変えられてしまう場合がある
function num1($num){
$num = 5;
}
function num2(&$num){
$num = 5;
}
$num = 1;
num1($num);
echo $num;
num2($num);
echo $num;
アクセス権の種類
public
どこからでもアクセスできる
private
そのクラスの中からしかアクセスできない
protected
そのクラスの中からしかアクセスできない
使用例
class Menu{
public $name;
private $price;
protected $type;
public function __construct($name,$price,$type){
$this->name = $name;
$this->price = $price;
$this->type = $type;
}
}
$curry = new Menu('カレー',700,'主食');
echo $curry->name; // カレー
echo $curry->price; // 出力されない
echo $curry->type; // 出力されない
ゲッター,セッター
private,protectedで指定したプロパティの
値を取り出す、値を変更するために
その専用のメソッドを用意することで取り出せる
使用例
class Menu{
private $name;
private $price;
private $type;
public function __construct($name,$price,$type){
$this->name = $name;
$this->price = $price;
$this->type = $type;
}
// ゲッター
public function getName(){
return $this->name;
}
// セッター
public function setName($name){
$this->name = $name;
}
}
$curry = new Menu('カレー',700,'主食');
// ゲッター使用
echo $curry->getName()."<br>";
// セッター使用
$curry->setName('ラーメン');
echo $curry->getName();