PHP 魔術方法

來源:互聯網
上載者:User

標籤:函數   物件導向編程   name   logs   初始化   cal   刪除   div   未定義   

一、php中的魔術方法

  php在物件導向編程時有一些特殊的方法,會在特定的時機自動調用,我們將這類方法稱為魔術方法。

二、常見的魔術方法及功能

  1.建構函式 __construct():當類被執行個體化為一個對象時自動調用,主要用來完成對象產生時初始化屬性。

    例:

 1 <?php 2  3 class App{ 4  5      public function __construct(){ 6             7                 echo 1111; 8     } 9     10 }11 12 $app=new App();//自動輸出111

  2.解構函式 __destruct():當對象使用完畢,銷毀對象前會自動調用。

     例:

 1 <?php 2  3 class App{ 4  5      public function __construct(){ 6             7                 echo 1111; 8     } 9      10      public function __destruct(){11     12          echo 2222;13 }14 $app=new App();//先輸出111,在輸出222

       3.__isset($name):在外部檢測類中某屬性是否存在時,如果該屬性為私人屬性或未定義屬性,就會自動觸發__isset($name)方法。

    例

<?phpclass App{      private $name=‘jack‘;  public function __isset($name){             //$name為外部查詢的屬性名稱          if(isset($this->$name)){                   echo‘ 請求不合法,你查詢的是私人屬性‘;           }else{                  echo ‘未定義的屬性‘;           }    }    }$app=new App();isset($app->name);//結果:請求不合法,你查詢的是私人屬性;isset($app->age);//結果:未定義的屬性

          4.__unset() 在外部刪除類中屬性時,如果該屬性為類的私人屬性或該屬性未定義時,自動觸發__unset方法。

       例:

<?phpclass App{      private $name=‘jack‘;  public function __unset($name){             //$name為外部要刪除的屬性名稱          if(isset($this->$name)){                   echo‘ 請求不合法,你刪除的是私人屬性‘;           }else{                  echo ‘未定義的屬性‘;           }    }    }$app=new App();unset($app->name);//結果:請求不合法,你刪除的是私人屬性;unset($app->age);//結果:未定義的屬性

      5. __set($name,$value):當在外部給類中的屬性賦值時,如果該屬性未定義,則會觸發__set($name,$value)。

        例

<?phpclass App{      public function __set($name){             //$name為外部要賦值的屬性名稱       echo 2222;    }    }$app=new App();$app->name=‘jack‘;//結果:2222

       6.__get($name):當在外部調用類的屬性時,如果該屬性未定義,則會觸發__get($name)方法。

   例

<?phpclass App{   public $name=‘jack‘;    public function __get($name){             //$name為外部要調用的屬性名稱       echo 333;    }    }$app=new App();echo $app->name;//輸出 jack;echo $app->age ;//結果:333;

       7.__call($name):當在外部調用類中的方法時,如果該方法未定義,則會觸發__call($name)方法。

      例

<?phpclass App{   public function run(){   echo ‘去旅遊‘; }  public function __call($name){             //$name為外部要調用的方法名       echo 333;    }    }$app=new App();echo $app->run();//輸出  去旅遊;echo $app->play() ;//結果:333;

      8. __autoload($name):一般用來自動載入類,如果類的命名規範,且要引用的類比較多,或防止忘記引用時,可以使用自動載入功能。

   例

<?phpfunction __autoload($name){   include   $name.‘class.php‘; }$app=new App();//會自動載入目前的目錄下的App.class.php

 

PHP 魔術方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.