zoukankan      html  css  js  c++  java
  • 转 PHP _construct _destory _call _get _set等

    PHP _construct _destory _call _get _set等

    PHP 技术 2009-12-23 22:40:08 阅读129 评论0 字号:

    1,__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。

    class Test

    {

    function __construct()

    {

    echo "before";

    }

    }

    $t = new Test();

    输出是:

    start

     

     

    <?

    class Test

    {

        function Test()

    {

    echo "end2";

    }

    function __construct()

    {

    echo "end";

    }

    }

    $t = new Test();

    //输出end

    ?>

    我们知道 php5对象模型 < ,所以__construct()作为类的默认的构造函数 而不会调用同类名函数 和__construct()方法的话,php5会默认调用构造函数 ,那么如果我们同时定义构造函数 是类的构造函数 的函数>

    2,__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

    class Test

    {

    function __destruct()

    {

    echo "end";

    }

    }

    $t = new Test();

    将会输出

    end

    我们就可以在对象操作结束的时候进行释放资源之类的操作

    3,__get() 当试图读取一个并不存在的属性的时候被调用。

    如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方 法,并且我们可以用这个函数 实现类似java中反射的各种操作。

    class Test

    {

    public function __get($key)

    {

    echo $key . " 不存在";

    }

    }

    $t = new Test();

    echo $t->name;

    就会输出:

    name 不存在

    4,__set() 当试图向一个并不存在的属性写入值的时候被调用。

    class Test

    {

    public function __set($key,$value)

    {

    echo '对'.$key . "附值".$value;

    }

    }

    $t = new Test();

    $t->name = "aninggo";

    就会输出:

    对 name 附值 aninggo

    5,__call() 当试图调用一个对象并不存在的方法时,调用该方法。

    class Test

    {

    public function __call($Key, $Args)

    {

    echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true);

    }

    }

    $t = new Test();

    $t->getName(aning,go);

    程序将会输出:

    您要调用的 getName 方法不存在。参数是:Array

    (

    [0] => aning

    [1] => go

    )

    6,__toString() 当打印一个对象的时候被调用

    这个方法类似于java的toString方法,当 我们直接打印对象的时候回调用这个函数

    class Test

    {

    public function __toString()

    {

    return "打印 Test";

    }

    }

    $t = new Test();

    echo $t;

    运行echo $t;的时候,就会调用$t->__toString();从而输出

    打印 Test

    7,__clone() 当对象被克隆时,被调用

    class Test

    {

    public function __clone()

    {

    PHP _construct _destory _call _get _set等

    计 算机技术   2009-08-03 11:52   阅读111   评论0  

    字号: 大  中 

    1,__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。

    class Test

    {

    function __construct()

    {

    echo "before";

    }

    }

    $t = new Test();

    输出是:

    start

     

     

    <?

    class Test

    {

        function Test()

    {

    echo "end2";

    }

    function __construct()

    {

    echo "end";

    }

    }

    $t = new Test();

    //输出end

    ?>

    我们知道 php5对象模型 < ,所以__construct()作为类的默认的构造函数 而不会调用同类名函数 和__construct()方法的话,php5会默认调用构造函数 ,那么如果我们同时定义构造函数 是类的构造函数 的函数>

    2,__destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

    class Test

    {

    function __destruct()

    {

    echo "end";

    }

    }

    $t = new Test();

    将会输出

    end

    我们就可以在对象操作结束的时候进行释放资源之类的操作

    3,__get() 当试图读取一个并不存在的属性的时候被调用。

    如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方 法,并且我们可以用这个函数 实现类似java中反射的各种操作。

    class Test

    {

    public function __get($key)

    {

    echo $key . " 不存在";

    }

    }

    $t = new Test();

    echo $t->name;

    就会输出:

    name 不存在

    4,__set() 当试图向一个并不存在的属性写入值的时候被调用。

    class Test

    {

    public function __set($key,$value)

    {

    echo '对'.$key . "附值".$value;

    }

    }

    $t = new Test();

    $t->name = "aninggo";

    就会输出:

    对 name 附值 aninggo

    5,__call() 当试图调用一个对象并不存在的方法时,调用该方法。

    class Test

    {

    public function __call($Key, $Args)

    {

    echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true);

    }

    }

    $t = new Test();

    $t->getName(aning,go);

    程序将会输出:

    您要调用的 getName 方法不存在。参数是:Array

    (

    [0] => aning

    [1] => go

    )

    6,__toString() 当打印一个对象的时候被调用

    这个方法类似于java的toString方法,当 我们直接打印对象的时候回调用这个函数

    class Test

    {

    public function __toString()

    {

    return "打印 Test";

    }

    }

    $t = new Test();

    echo $t;

    运行echo $t;的时候,就会调用$t->__toString();从而输出

    打印 Test

    7,__clone() 当对象被克隆时,被调用

    class Test

    {

    public function __clone()

    {

    echo "我被复制了!";

    }

    }

    $t = new Test();

    $t1 = clone $t;

    程序输出:

    我被克 隆了!

    echo "我被复制了!";

    }

    }

    $t = new Test();

    $t1 = clone $t;

    程序输出:

    我被克隆了!

  • 相关阅读:
    Android 解决小米手机Android Studio安装app 报错的问题It is possible that this issue is resolved by uninstalling an existi
    Android Unresolved Dependencies
    Android studio 自定义打包apk名
    Android Fragment与Activity交互的几种方式
    魅族和三星Galaxy 5.0webView 问题Android Crash Report
    Android几种常见的多渠道(批量)打包方式介绍
    Android批量打包 如何一秒内打完几百个apk渠道包
    上周热点回顾(9.30-10.6)团队
    上周热点回顾(9.23-9.29)团队
    上周热点回顾(9.16-9.22)团队
  • 原文地址:https://www.cnblogs.com/winner/p/1730925.html
Copyright © 2011-2022 走看看