アクセス修飾子とは
プログラム上で変数やメソッドが同名として重複しないように、
変数や関数の有効範囲をするもの。とのことです。
アクセス修飾子の使い分け・種類
public
クラス内、外関係どこからでもアクセス可能
public.php
<?php
class Myclass {
public $public = 'public';
public function printhello() {
echo $this->public;
}
}
$obj = new Myclass;
echo $obj->public; //プロパティの呼び出し
echo $obj->printhello(); //メソッドの呼び出し
//=> public public
protected
そのクラスと継承先クラスからアクセスが可能
protected.php
<?php
class Myclass {
protected $protected = 'protected';
public function printhello() {
echo $this->protected;
}
}
class Myclass2 extends Myclass {
public function printhello2() {
echo $this->protected;
}
}
$obj = new Myclass2;
echo $obj->protected;
echo $obj->printhello2();
// =>
// Fatal error: Uncaught Error: Cannot access protected property Myclass2::$protected in /var/www/html/php2/47/C.php:18 Stack trace: #0 {main} thrown in /var/www/html/php2/47/C.php on line 18
// protected
private
そのクラスからのみアクセス可能
private.php
<?php
class Myclass {
private $private = 'private';
public function printhello() {
echo $this->private;
}
}
$obj = new Myclass;
echo $obj->private; //呼び出せない
echo $obj->printhello(); //呼び出せる
// =>
// Fatal error: Uncaught Error: Cannot access private property Myclass::$private in /var/www/html/php2/47/B.php:12 Stack trace: #0 {main} thrown in /var/www/html/php2/47/B.php on line 12
// private