程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php 自動加載對象

php 自動加載對象

編輯:PHP基礎知識
 

在一些公司裡,將各個類放在單獨的文件中是很常見的做法。再來看圖書館的例子,假設管理應用程序需要表示圖書、員工、事件和顧客的類。根據這個項目的任務,可能要創建一個名為classes 的目錄來放置如下文件:Books.class.php、Employees.class . php、Events.class.php和Patrons.class.php。雖然這確實有助於類的管理,不過它要求各個文件的腳本都能找到相應文件,這一般通過require_once()語句來實現.因此,如果腳本需要這4 個類,就要在前面插入如下語句:
require_once ("classes/Books.class.php") ; 
require_once ("classes/Employees.class.php" ) ; 
require_once ("classes/Events.class.php") ; 
require_once ("classes/Patrons.class.php") ;
       以這種方式管理類包含(class inclusion)會變得非常麻煩,並且會在本來已經很復雜的開發過程中再增加一個額外的步驟。為消除這個額外的任務,PHP5中引入了自動加載對象的概念.自動加載通過定義特殊的__autoload函數,當引用未在腳本中定義的類時會自動調用這個函數.回到圖書館的例子,通過定義如下函數,就不必再手工包含各個類文件了:
例子1:
  function __autoload ($class) { 
require_once ("classes/$class.class.php") ; //這樣就加載了classes文件夾下的全部php文件
}
例子2:
文件名:doo.php


class doo { 
  public function __construct() { 
    echo "2011"; 
  } 
}
class Example { 
  public function __construct() { 
    echo "hello"; 
  } 
}
文件名:test.php

function __autoload($class) { 
  include("$class.php");

$p=new doo();// 從 doo.php 加載 doo()類
print_r($p);


       這裡須注意:1、被加載的文件名(如doo.php)裡面必須有個與其相同的類名(class doo);2、加載文件(test.php)只能嘗試尋找與被加載文件名相同命名的類,不然會出錯。
       定義這個函數後,將不再需要那些require_once ()語句,因為當第一次調用一個類時,就會調用__autoload(),並根據__autoload()中定義的命令加載類。這個函數可以放在某個全局應用程序配置文件中,它只是說該函數要在腳本中可用。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved