013对象—— __clone __toString __call

<?php

/**
 *
 */
//__clone()方法对一个对象实例进行的浅复制,对象内的基本数值类型进行的是传值复制
/*class a
{
    public $uname;
    public $num;

    function _a()
    {
        echo "后盾网免费视频课程";
    }

    function b()
    {
        echo "php视频课程";
    }

    //克隆函数:
    function __clone()
    {
        $this->num++;
    }
}

$c = new a();
//$d=$c;
//echo intval($c===$d); //获取结果的整数值:
//$c->uname=100;
//echo $d->uname;//输出:100

//clone克隆对象:
$e = clone $c;
//echo intvalc($e===$c);//输出:0
echo $e->num;//输出:1*/


//__toString:是快速获取对象的字符串信息的便捷方式
/*class db
{
    private $host;
    private $user;
    private $pwd;
    private $dbname;

    function __construct($host,$user,$pwd,$dbname)
    {
        $this->host = $host;
        $this->user = $user;
        $this->pwd=$pwd;
        $this->dbname=$dbname;
    }
    function _conn(){
        $mysqli=new mysqli($this->host,$this->user,$this->pwd,$this->dbname);
    }
    function _gettable(){
        echo "获得表名";
    }
    function _getFields(){
        echo "获取字段列表";
    }
    function _insert(){
        echo "插入数据";
    }
    function _update(){
        echo "更新数据";
    }
    function __toString()
    {
        //get_class_methods()获取所有类的方法。
        $method=implode("<br/>",get_class_methods(__CLASS__));

        //get_object_var($object),返回一个数组。获取$object对象中的属性,组成一个数组
        $vars=get_object_vars($this);
        $str="";
        foreach ($vars as $k=>$v){
            $str.=$k.'=>'.$v."<br/>";
        }
        return $str;
       //return $method;//输出:类中所有的方法出来。
    }
}

$arc=new db('localhost','root','user','hdcms');
echo $arc;*/

//__call: 当调用的类的方法不存在的时候执行他。
class f{
    function _f(){
        echo "3333";
    }
    function __call($methodName, $args)
    {
        //echo $methodName;//输出:_f1
        print_r($args);//输出:Array ( [0] => 11 [1] => 22 [2] => 33 )
    }
}
$d=new f();
$d->_f1(11,22,33);

  

posted @ 2017-12-11 10:12  生如逆旅,一苇以航  阅读(160)  评论(0编辑  收藏  举报