魔术方法__set:
触发时机:在类的外部对私有的成员属性进行赋值的时候自动调用
参数:需要传入两个参数:第一个为成员属性名,第二个为成员属性值。
注意:请对__get __set __isset __unset不要使用private关键词来声明这些魔术成员方法。
ps(在5.3以前版本可以使用private,在5.3x版本之后全部都只允许public关键词,要么就不加)。
- <?php
- /****
- *
- * __set魔术方法
- *
- */
- class person {
- private $name,$sex,$age,$hf;
- function __construct($name,$sex,$age,$hf){
- $this->name=$name;
- $this->sex=$sex;
- $this->age=$age;
- $this->hf=$hf;
- }
- function say(){
- echo '你好我的名字叫'.$this->name.'我的性别是'.$this->sex.'我的年龄是'.$this->age.'我的婚否状态'.$this->hf;
- }
- //对私有属性赋值的时候自动该方法
- function __set($a,$v){
- if($a=='hf'){
- $this->$a=$v;
- }
- }
- }
- $p=new person('你好','男',19,'已婚');
- //对私有属性进行赋值
- $p->hf='未婚';
- $p->say();
- ?>
魔术方法__get:
触发时机:在类外部调用一个私有属性的时候自动执行;
参数:传一个参数即可,因为get只需要获得属性值即可,所以需要传入属性名。
注意:值需要return回去 不要用echo输出
- <?php
- /****
- *
- * __get魔术方法
- *
- */
- class person {
- private $name,$sex,$age,$hf;
- function __construct($name,$sex,$age,$hf){
- $this->name=$name;
- $this->sex=$sex;
- $this->age=$age;
- $this->hf=$hf;
- }
- function say(){
- echo '你好我的名字叫'.$this->name.'我的性别是'.$this->sex.'我的年龄是'.$this->age.'我的婚否状态'.$this->hf;
- }
- //在类外部获取成员属性的时候自动触发
- function __get($v){
- if($v=='sex'){
- return $this->$v;
- }
- }
- }
- $p=new person('你好','男',19,'已婚');
- // 调用私有方法sex get方法获取到return返回来 接着输出
- echo $p->sex;
- ?>