php物件導向之重載

來源:互聯網
上載者:User

這篇文章主要介紹了關於php物件導向之重載 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

定義:

1)動態地“建立”類的屬性和方法。

2)通過魔術方法實現。

3)當調用當前環境下未定義或不可見的類的屬性或方法時,重載方法會被調用。

屬性重載

__set      賦值__get      讀取__isset    判斷是否存在__unset    銷毀

例子

// 屬性的重載class Person{    public $name = '小芳';    protected $age = 18;    public function __get($n)    {        //echo '試圖讀取不可訪問的屬性'.$n;        if( $n == 'age'){            return $this -> age;        }else{            return '你要查戶口嗎?';        }    }    public function __set($n,$v)    {        //echo '試圖設定不可訪問的屬性','<br/>';        $this -> $n = $v;    }    public function __isset($n)    {        echo '判斷不可訪問的屬性'.$n.'是否存在','<br/>';    }    public function __unset($n)    {        echo '銷毀不可訪問的屬性'.$n,'<br/>';    }}$p1 = new Person();// 讀取//echo $p1 -> age,'<br/>';//echo $p1 -> xxx,'<br/>';// 設定//$p1 -> age = 30;//echo $p1 -> age,'<br/>';// 判斷存在與否isset($p1 -> age);// 銷毀unset($p1 -> age);

方法重載

__call         調用不可訪問的普通方法__callStatic   調用不可訪問的靜態方法

特別注意,__callStatic定義時,要定義成靜態方法。

例子

<?phpclass MyClass{    protected function func($n)    {        echo '這是一個不可訪問的方法';        echo '參數有'.$n;    }    protected static function fun2()    {        echo '受保護的靜態方法';    }    public function __call($function_name,$args)    {        echo '觸發了不可訪問的方法';        var_dump($function_name);        var_dump($args);    }    public static function __callStatic($function_name,$args)    {        echo '觸發了不可訪問jing tai方法,靜態!!!!';        var_dump($function_name);        var_dump($args);    }} // 執行個體化$c1 = new MyClass();$c1 -> func([1,2,3]);$c1 -> func2([1,2,3]);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.