### アクセス修飾子 — 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());