下面本文章給各位簡單的總結一下php面相對象的魔術方法相關方法命令了,希望這幾個例子能幫助到大家理解魔術方法吧.
1.__construct()
實例化對象是被自動調用,當__construct和以類名為函數名的函數,同時存在時調用__construct,另一個不背調用,類名為函數名的函數為老版的構造函數.
2.__destruct()
當刪除一個對象或一個對象操作結束是被調用。
3.__call()
對象調用某個方法。若方法不存在,這調用__call 這個方法
4.__get()
讀取一個對象屬性,如果對象屬性是私有的會調用它
5.__set()
給一個對象屬性賦值時如果屬性是私有的會調用它
6.__toString()
打印一個對象的時候會被調用。
7.__clone()
克隆對象時被調用,如:$a=new test(); $a1=clone $a;
8.__sleep()
Serialize 之前被調用,若對象比較大,想刪減一點東西在序列化可以用它.
9.__wakeup()
Unserialize時被調用,做些對象的初始化工作.
10.__isset()
檢測一個對象的屬性是否存在如果檢測的屬性是私有的時候會被調用.
11.__unset()
刪除一個對象屬性時如果 刪除的對象屬性是私有的會被調用.
12.__set_state()
調用var_export時,被調用,用__set_state的返回值做為var_export的返回值.
13.__autoload()
實例化一個對象時,如果對應的類不存在,則該方法被掉用.
實例代碼如下:
- <?php
- class BookStore{
- private $p = array();
- function __set($name,$value){
- print "set:::::{$name}:{$value}<br />";
- $this->p[$name] = $value;
- } //開源軟件:Vevb.com
- function __get($name){
- print "get:::::{$name}<br />";
- //array_key_exists檢查給定的鍵名或索引是否存在于數組中
- return array_key_exists($name,$this->p) ? $this->p[$name] : null;
- }
- }
- $computer = new BookStore();
- $computer->php = 'php web開發大全';
- echo "php書籍=".$computer->php;
- ?>
__autoload(),你是不是還在因為調用的類或函數過多而煩惱,是不是還在因為寫了n遍的require()和include()而煩惱,知道__autoload()方法,你就不需這么做了,下面我來做一個拋磚引玉的作用.
MyClass.php文件代碼如下:
- <?php
- class MyClass{
- function printWeb(){
- echo "你現在訪問的網站是www.49028c.com";
- }
- }
- ?>
general.inc.php文件
- <?php
- function __autoload($class_name){
- $file(dirname(__FILE__))."/libs/classes/$class_name.php";
- if (!file_exists($file)){
- return false;
- }else{
- require_once($file);
- }
- }
- ?>
main.php
- <?php
- require("general.inc.php");
- $obj = new Myclass();
- if (is_object($obj)){
- $obj->printWeb();
- }else{
- echo "類文件沒調入";
- }
- ?>
運行結果:你現在訪問的網站是www.49028c.com
當然還有很多魔術方法,比如__isset(),__unset(),__toString(),__clone()這里就不一一介紹了.
新聞熱點
疑難解答