• 技术文章 >php教程 >PHP源码

    php面相对象的魔术方法使用总结

    2016-06-08 17:21:38原创650
    下面本文章给各位简单的总结一下php面相对象的魔术方法相关方法命令了,希望这几个例子能帮助到大家理解魔术方法吧。


    1.__construct()
    实例化对象是被自动调用。当__construct和以类名为函数名的函数 同时存在时调用__construct,另一个不背调用。
    类名为函数名的函数为老版的构造函数。
    2.__destruct()
    当删除一个对象或一个对象操作结束是被调用。
    3.__call()
    对象调用某个方法。若方法不存在,这调用__call 这个方法
    4.__get()
    读取一个对象属性,如果对象属性是私有的会调用它
    5.__set()
    给一个对象属性赋值时如果属性是私有的会调用它
    6.__toString()
    打印一个对象的时候会被调用。
    7.__clone()
    克隆对象时被调用,如:$a=new test(); $a1=clone $a;
    8.__sleep()
    Serialize 之前被调用,若对象比较大,想删减一点东西在序列化可以用它。
    9.__wakeup()
    Unserialize时被调用,做些对象的初始化工作。
    10.__isset()
    检测一个对象的属性是否存在如果 检测的属性是私有的时候会被调用。
    11.__unset()
    删除一个对象属性时如果 删除的对象属性是私有的会被调用
    12.__set_state()
    调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
    13.__autoload()
    实例化一个对象时,如果对应的类不存在,则该方法被掉用。


    php书籍=php web开发大全

    代码如下 复制代码


    class BookStore{
    private $p = array();

    function __set($name,$value){
    print "set:::::{$name}:{$value}
    ";
    $this->p[$name] = $value;
    }
    function __get($name){
    print "get:::::{$name}
    ";
    //array_key_exists检查给定的键名或索引是否存在于数组中
    return array_key_exists($name,$this->p) ? $this->p[$name] : null;
    }
    }
    $computer = new BookStore();
    $computer->php = 'php web开发大全';
    echo "php书籍=".$computer->php;
    ?>


    (2)__autoload(),你是不是还在因为调用的类或函数过多而烦恼,是不是还在因为写了n遍的require()和include()
    而烦恼,知道__autoload()方法,你就不需这么做了,下面我来做一个抛砖引玉的作用:
    MyClass.php文件:

    代码如下 复制代码


    class MyClass{
    function printWeb(){
    echo "你现在访问的网站是www.111cn.net";
    }
    }
    ?>

    general.inc.php文件


    function __autoload($class_name){
    $file(dirname(__FILE__))."/libs/classes/$class_name.php";
    if (!file_exists($file)){
    return false;
    }else{
    require_once($file);
    }
    }
    ?>

    main.php


    require("general.inc.php");
    $obj = new Myclass();
    if (is_object($obj)){
    $obj->printWeb();
    }else{
    echo "类文件没调入";
    }
    ?>


    运行结果:
    你现在访问的网站是www.111cn.net

    当然还有很多魔术方法,比如__isset(),__unset(),__toString(),__clone()这里就不一一介绍了

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp quot php name gt
    上一篇:PHP CURL或file_get_contents获取网页标题的代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php实用图片水印效果代码• 检测移动设备的php代码(手机访问)• php 列出目录与删除目录实例代码• 用PHP实现小写金额转换大写金额【精确到分】• 收藏PHP常用自定义函数
    1/1

    PHP中文网