### アクセス修飾子 — public, protected, private
public: 外からOK
protected: クラス内、あるいは継承先のクラス内
private: クラス内のみ
class hoge {
public function pub_func(){
echo "call pub_func\n";
$this->pro_func();
$this->pri_func();
}
protected function pro_func(){
echo "call pro_func\n";
}
private function pri_func(){
echo "call pri_func\n";
}
}
$obj = new hoge();
$obj->pub_func();
class hoge {
public $_pub_val;
protected $_pro_val;
private $_pri_val;
}
$obj = new hoge();
$obj->_pub_val = 10;
var_dump($obj);
class hoge {
public function f(){
$this->_pro_val = 20;
$this->_pri_val = 20;
}
public $_pub_val;
public $_pro_val;
public $_pri_val;
}
$obj = new hoge();
$obj->_pub_val = 10;
$obj->f();
var_dump($obj);
隠蔽化とは、全てのプログラム詳細を理解できていなくても、必要な箇所のみ修正•加筆等を行えば、全体として動くことをいう。
### アクセサー(セッター)
class hoge {
public function setVal($v) {
$this->_val = $v;
}
public function getVal(){
return $this->_val;
}
}
$obj = new hoge();
$obj->setVal('test');
var_dump($obj->getVal());
### コンストラクター
class hoge {
public function __construct(){
echo "run constructor\n";
}
}
$obj = new hoge();
run constructor
デストラクター
class hoge {
public function __destruct(){
echo "run destructor\n";
}
}
$obj = new hoge();
$obj = null;
sleep(5);
### immutableなオブジェクト
class hoge {
public function __construct($v){
$this->_val = $v;
}
public function getVal(){
return $this->_val;
}
}
$obj = new hoge('vall');
var_dump($obj->getVal());