魔術方法__autoload()執行個體詳解(php物件導向進階教程)

來源:互聯網
上載者:User
在寫代碼的時候,經常會遇到一個頭疼的問題,就是要在一個頁面中引入很多的類,需要用到include_once或者require_once()函數一個一個引入。當引入的內容不多時,還可以接受,但是如果有十幾個或者幾十個檔案需要引入,操作次數多,煩躁不說,還會出現重複引入或者忘了引用的情況。

現在在PHP5中我們可以用__autoload()方法來解決這個問題,__autoload()方法可以自動執行個體化需要使用的類。當程式要用到一個類,但該類還沒有執行個體化時,PHP5將調用__autoload()方法,在指定的路徑下自動尋找和該類名稱相同的檔案。如果找到,程式則繼續執行;否則,報告錯誤。

注意:

其他所有的方法都是要在類的內部添加才起作用,__autoload()是唯一一個不在類中添加的方法

只要在頁面中使用到一個類,類名就會自動傳給這個參數。

舉個例子:

類檔案sport.class.php的代碼:

<?phpclass Sport{private $type;public function __construct($type){$this->type = $type;}public function __toString(){return $this->type;}}?>

在index.php檔案下的代碼:

<?phpfunction __autoload($class_name){                                         //建立__autoload方法$class_path = $class_name . '.class.php';                           //類檔案路徑if(file_exists($class_path)){                                                  //判斷檔案是否存在include_once($class_path);                                          //動態引入檔案}elseecho '類路徑錯誤';}$sport = new Sport('打籃球');echo $sport;?>

先在類檔案sport.class.php中常見類,但是不要執行個體化。然後再php檔案index.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.