01魔术方法__get应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //当访问不可访问属性时,__get()魔术方法会自动调用
  8. public function __get($n)
  9. {
  10. return $this->$n;
  11. }
  12. }
  13. //创建学生类对象
  14. $obj = new Student();
  15. //访问私有的属性
  16. echo "{$obj->name}的年龄是{$obj->age}岁!";

02魔术方法__set应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //当给不可访问的属性赋值时,__set()魔术方法自动调用
  8. public function __set($n,$v)
  9. {
  10. $this->$n = $v;
  11. }
  12. }
  13. //创建学生类对象
  14. $obj = new Student();
  15. //修改私有属性
  16. $obj->name = "刘明明";
  17. $obj->age = 29;
  18. var_dump($obj);

03魔术方法__isset应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //当对不可访问的属性应用isset()或empty()时,__isset()会自动调用
  8. public function __isset($n)
  9. {
  10. return isset($this->$n);
  11. }
  12. }
  13. //创建学生类对象
  14. $obj = new Student();
  15. //判断私有属性是否存在
  16. if(isset($obj->name))
  17. {
  18. echo "存在";
  19. }else
  20. {
  21. echo "不存在或不可访问";
  22. }

04魔术方法__unset应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //当对私有属性应用unset()时,魔术方法__unset()自动调用
  8. public function __unset($n)
  9. {
  10. unset($this->$n);
  11. }
  12. }
  13. //创建学生类对象
  14. $obj = new Student();
  15. //删除对象属性
  16. unset($obj->name);
  17. var_dump($obj);

05魔术方法__call应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //当访问不存在或不可访问的方法时,魔术方法__call()自动调用
  8. //参数:$func是传递过来的方法名称,$args是传递过来的参数数组
  9. public function __call($func,$args)
  10. {
  11. echo "方法{$func}(".implode(',',$args).")不存在或不可访问!";
  12. }
  13. }
  14. //创建学生类对象
  15. $obj = new Student();
  16. //调用一个不存在的方法
  17. $obj->showInfo("张三",24);

06魔术方法__callStatic应用

  1. <?php
  2. class Student
  3. {
  4. //私有的成员属性
  5. private $name = "张三";
  6. private $age = 24;
  7. //用静态化方式访问不存在或不可访问的方法时,魔术方法__callStatic()自动调用
  8. //参数:$func是传递过来的方法名称,$args是传递过来的参数数组
  9. public static function __callStatic($func,$args)
  10. {
  11. echo "方法{$func}(".implode(',',$args).")不存在或不可访问!";
  12. }
  13. }
  14. //用静态化方法调用showInfo()方法
  15. Student::showInfo('张三四',24,'男');