Php魔术函数学习与应用

<?php

/**

 * php中的魔术方法

 * @author dxk

 *

 */

class Henu {

         public $name = "zxh<br />";

        

         /**

          * 构造方法

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

          */

         function __construct() {

                   echo "构造方法<br />";

         }

        

         /**

          * php5对象模型和类名相同的函数也是类的构造函数,

          * 那么如果我们同时定义和类名相同的函数和__construct()方法的话,

          * php5会默认调用__construct()函数,

          * 所以__construct()作为类的默认的构造函数

          */

         function Henu() {

                   echo "Henu方法<br />";

         }

        

         /**

          * 析构方法

          * 当删除一个对象或对象操作终止的时候调用。

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

          */

         function __destruct() {

                   echo "析构方法<br />";

         }

        

         /**

          * 当试图读取一个并不存在的属性的时候被调用。

          *

          * @param string $val    调用的属性名

          */

         function __get($val) {

                   echo $val . "属性不存在<br />";

         }

        

         /**

          * 当试图向一个并不存在的属性写入值的时候被调用。

          *

          * @param string $key            调用的属性名

          * @param string $value                  要赋的值(数组类型)

          */

         function __set($key, $value) {

                   echo "对属性{$key}赋值{$value}失败<br />";

         }

        

         /**

          * 当试图调用一个并不存在的方法时被调用。

          *

          * @param string $method

          * @param array $Args

          */

         function __call($method, $Args) {

                   echo "{$method}方法不存在,你的参数<pre>" . print_r ( $Args, true ) . "</pre>";

         }

        

         /**

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

          */

         function __toString() {

                   return "打印对象<br />";

         }

        

         /**

          * 当对象被clone,被调用

          */

         function __clone() {

                   echo "对象被复制<br />";

         }

}

$t = new Henu ();

$t->username;

$t->user = "wuhui";

$t->wuhui ( "dxk", "zxh" );

echo $t;

//$t1 =  clone $t;

$t1 = $t;

$t1->name = "傻妞<br />";

echo $t->name;

echo implode(" ", get_class_methods('Henu'));// 返回由类的方法名组成的数组

posted @ 2010-11-24 09:37  1024114660  阅读(112)  评论(0)    收藏  举报