栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

面向对象 (六)魔术方法

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象 (六)魔术方法

魔术方法

特定情况下,执行的方法

不可访问的情况
    根本不存在
    权限不够
    

构造函数 __construct()
    作用: 主要用于初始化,变量赋值 或 初始化的相关操作, 实例化对象的时候调用
    细节:
 当实例化子类时,子类没有构造函数,会调用父类的构造函数
 当子类想访问父类可访问方法时,使用parent::function()或者父类名::function()

析构函数 __destruct()
 作用:常用于释放资源,对象销毁时调用
 细节:多少个对象,文件执行完毕,就会调用多少次析构函数
    对象销毁:
 显示销毁
     unset($obj)
     $obj = null
     $obj = 'abc'
 系统销毁
     当程序执行完毕后,对象被系统销毁
    
__call()  当对象调用一个不可访问的方法的时候,会被调用

__callStatic()  当访问不可访问的静态方法时,调用

__get()  当访问不可以访问的属性时,调用

__set()  当设置不可访问的属性时候,调用

__isset()  当对不可访问的属性进行了 isset() empty()操作时,调用
    
__unset()  当对不可访问的属性进行了 unset()操作时,调用

__sleep()  串行化的时候用,涉及到序列化

__wakeup()  反串行化的时候用

__toString()  当对象被当做字符串输出时,调用

__clone  对象克隆前被调用,阻止克隆可以将__clone()方法申明为private
实践
demo7.php
";
 $this->class = $class;
    }

    //析构函数,用于释放资源
    public function __destruct()
    {
 echo '调用__destruct';echo "
"; echo '程序运行结束调用'; } //调用不可访问方法时调用,使得程序更加健壮,不至于报错 public function __call($name, $arguments) { echo '调用__call';echo "
"; echo $name;echo "
"; echo "
";var_dump($arguments);echo "
";echo "
"; } //调用不可访问的静态方法时调用 public static function __callStatic($name, $arguments) { echo '调用__callStatic';echo "
"; echo $name;echo "
"; echo "
";var_dump($arguments);echo "
";echo "
"; } //读取不可访问属性调用 public function __get($name) { echo '调用__get';echo "
"; echo $name;echo "
"; } //设置不可访问属性时调用 public function __set($name, $arguments) { echo '调用__set';echo "
"; echo $name;echo "
"; echo "
";var_dump($arguments);echo "
";echo "
"; } //对不可访问属性调用isset时调用 public function __isset($name) { echo '调用__isset';echo "
"; echo $name;echo "
"; } //对不可访问属性调用unset时调用 public function __unset($name) { echo '调用__unset';echo "
"; echo $name;echo "
"; } //对类对象执行serialize是调用 public function __sleep() { echo '调用__sleep';echo "
"; return ['class']; } //对对象执行unserialize时调用 public function __wakeup() { echo '调用__wakeup';echo "
"; } //对象当字符串输出时调用 public function __toString() { echo '调用__stostring';echo "
"; return 'Student'; } //克隆对象的时候调用 public function __clone() { echo '调用__clone';echo "
"; } } $stu1 = new Student('stu1'); $stu1->getName();//调用__call Student::getName();//调用__callStatic $stu1->height;//调用__get $stu1->height = '175cm';//调用__set isset($stu1->height); //调用__isset empty($stu1->height); //调用__isset unset($stu1->height); //调用__unset $params = serialize($stu1); //调用__sleep echo "
";var_dump($params);echo "
";echo "
"; $obj = unserialize($params); //调用__wakeup echo "
";var_dump($obj);echo "
";echo "
"; $stu2 = clone $stu1; //调用__clone echo $stu1;echo "
";//调用__toString
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/226848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号