• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 第十一節--重載 -- Classes and Objects in PHP5 [11]

    發表于:2007-05-17來源:作者:點擊數: 標簽:Classes第十--重載一節and
    /* +-------------------------------------------------------------------------------+ | = 本文為Haohappy讀Core PHP Programming | = 中Classes and Objects一章的筆記 | = 翻譯為主+個人心得 | = 為避免可能發生的不必要的麻煩請勿轉載,謝謝 | = 歡迎


    /*
    +-------------------------------------------------------------------------------+
    | = 本文為Haohappy讀<<Core PHP Programming>>
    | = 中Classes and Objects一章的筆記
    | = 翻譯為主+個人心得
    | = 為避免可能發生的不必要的麻煩請勿轉載,謝謝
    | = 歡迎批評指正,希望和所有PHP愛好者共同進步!
    | = PHP5研究中心: http://blog.csdn.net/haohappy2004
    +-------------------------------------------------------------------------------+
    */

    第十一節--重載

    PHP4中已經有了重載的語法來建立對于外部對象模型的映射,就像Java和COM那樣. PHP5帶來了強大的面向對象重載,允許程序員建立自定義的行為來訪問屬性和調用方法.

    重載可以通過__get, __set, and __call幾個特殊方法來進行. 當Zend引擎試圖訪問一個成員并沒有找到時,PHP將會調用這些方法.

    在例6.14中,__get和__set代替所有對屬性變量數組的訪問. 如果必要,你可以實現任何類型你想要的過濾. 例如,腳本可以禁止設置屬性值, 在開始時用一定的前綴或包含一定類型的值.

    __call方法說明了你如何調用未經定義的方法. 你調用未定義方法時,方法名和方法接收的參數將會傳給__call方法, PHP傳遞__call的值返回給未定義的方法.

    Listing 6.14 User-level overloading
    php><?php 
       class Overloader 
       { 
           private $properties = array(); 
    
           function __get($property_name) 
           { 
               if(isset($this->properties[$property_name])) 
               { 
                   return($this->properties[$property_name]); 
               } 
               else 
               { 
                   return(NULL); 
               } 
           } 
    
           function __set($property_name, $value) 
           { 
               $this->properties[$property_name] = $value; 
           } 
    
           function __call($function_name, $args) 
           { 
               print("Invoking $function_name()<br>\n"); 
               print("Arguments: "); 
               print_r($args); 
    
               return(TRUE); 
           } 
       } 
       $o = new Overloader(); 
    
       //invoke __set() 給一個不存在的屬性變量賦值,激活__set() 
       $o->dynaProp = "Dynamic Content"; 
    
       //invoke __get() 激活__get() 
       print($o->dynaProp . "<br>\n"); 
    
       //invoke __call() 激活__call() 
       $o->dynaMethod("Leon", "Zeev"); 
    ?> 

    注:本文章為原創文章,版權歸文章作者與超越PHP網站所有,未經本站同意,禁止任何商業轉載。非盈利網站及個人網站轉載請注明出處,謝謝合作!

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>