通过__set()和__get()设置和获取私有字段
私有字段:只有类内可以访问
<?php class Computer { private $_name; private $_model; private $_cpu; //当类外的对象直接调用私有字段时,会跟着去检查是否有拦截器, //如果直接对$_name进行赋值,那么__set()方法就会拦截住,就不会报错了。 //采用拦截器进行赋值和取值 //赋值 private function __set($_key,$_value) { //那么$_key = '_name',那么$_value = '联想'; //$this->_name = '联想' //那么$_key = '_cpu',那么$_value = '四核' //$this->_cpu = '四核' //那么$_key = '_model',那么$_value = 'i7' //$this->_model = 'i7' $this->$_key = $_value; } //取值 private function __get($_key) { return $this->$_key; //如果$_key = '_name' 那么$this->_name; //如果$_key = '_cpu' 那么$this->_cpu; //如果$_key = '_model' 那么$this->_model; } } $computer = new Computer(); $computer->_name = '联想'; $computer->_cpu = '四核'; $computer->_model = 'i7'; echo $computer->_name; echo $computer->_cpu; echo $computer->_model; ?> //__set()和__get()方法私有了,还是可以执行,是因为 //因为目前程序的指针已经在类内了。而类内可以执行封装的方法 //类内执行私有方法,不会出现任何错误。 //它只需要间接的拦截就可以了。拦截是在内类执行的。 //说白了,__set()和__get()是PHP内置的方法,具有一定的特殊性