博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

流水孟春

以前使用的博客 webvista.cublog.cn
lib.cublog.cn
PHP5 __get __set重载 运行过程分析一例

 

<?php
class Setter{
   public $n;
   private $x = array();
   private function __get($nm) {
       if (isset($this->x[$nm])) {      //9  18
           $r = $this->x[$nm];          //10
           print "Returning: $r\n";     //11
           return $r;                   //12
       } else {
           echo "Nothing!\n";               //19
       }
   }                                        //20

   private function __set($nm, $val){
       echo "Setting [$nm] to $val\n"; //4 13 21
       if($this->x[$nm] = $val){       //5 14 22
           echo "OK!\n";               //6 15 23
       } else {
           echo "Not OK!\n";
       }
   }                                   //7 16 24
}
$foo = new Setter();  //1
$foo->n = 1;          //2
$foo->a = 100;        //3
$foo->a++;                            //8
$foo->z++;                               //17
print_r($foo);                              //25
?>

 


各输出步骤:
5: Setting [a] to 100
7:
8: Returning: 100
14: Setting [a] to 101
16:
20:
22: Setting [z] to 1
24:
26:
Setter Object
(
    [n] => 1
    [x:private] => Array
        (
            [a] => 101
            [z] => 1
        )

)

发表于: 2007-02-10,修改于: 2007-02-10 11:19,已浏览648次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.09314