• 构造函数和析构函数,引用返回 - []2008-03-06

    1.构造函数和析构函数

    构造函数

    void __construct ([ mixed $args [, $... ]] )

    PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

    <?php
    class BaseClass 
    {
       function 
    __construct
    () {
           print 
    "In BaseClass constructor\n"
    ;
       }
    }

    class 
    SubClass extends BaseClass 
    {
       function 
    __construct
    () {
           
    parent::__construct
    ();
           print 
    "In SubClass constructor\n"
    ;
       }
    }

    $obj = new BaseClass
    ();
    $obj = new SubClass
    ();
    ?>

    析构函数

    void __destruct ( void )

    PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

    <?php
    class MyDestructableClass 
    {
       function 
    __construct
    () {
           print 
    "In constructor\n"
    ;
           
    $this->name "MyDestructableClass"
    ;
       }

       function 
    __destruct
    () {
           print 
    "Destroying " $this->name "\n"
    ;
       }
    }

    $obj = new MyDestructableClass
    ();
    ?>

    2.引用返回

    引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:

    <?php
    function &find_var($param
    )
    {
        
    /* ...code... */
        
    return $found_var
    ;
    }

    $foo =& find_var($bar
    );
    $foo->2
    ;
    ?>

    a little addition to the example of pixel at minikomp dot com here below
    <?php

       
    function &func
    (){
            static
    $static = 0
    ;
           
    $static
    ++;
            return
    $static
    ;
        }

       
    $var1 =& func
    ();
        echo
    "var1:", $var1;
    // 1
       
    func
    ();
       
    func
    ();
        echo
    "var1:", $var1;
    // 3
       
    $var2 = func();
    // assignment without the &
       
    echo "var2:", $var2;
    // 4
       
    func
    ();
       
    func
    ();
        echo
    "var1:", $var1;
    // 6
       
    echo "var2:", $var2;
    // still 4

    ?>




    Tags: PHP

    oumaxer 发表于 14:53 | 引用 0 | 编辑

评论

发表评论