オブジェクト指向 アクセス権

アクセス権

プロパティ、メソッドの前につけることによって

外からアクセスできる範囲をしてすることができる

 

アクセス権を指定する理由

プロパティへの値を渡す方法は参照渡し

参照渡しとは関数に実際の変数を代入して値を変える方法

オブジェクト指向のインスタインスも参照渡しのため

アクセス権を指定しないと

無意識的にでも元の値を変えられてしまう場合がある

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();