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

php自動加載

編輯:關於PHP編程

php中有兩種自動加載機制函數   [php]   __autoload();      spl_autoload_register();   1. __autoload()   可以將需要使用類的時候把文件加載到程序中   [php]   <?php      function __autoload($className) {          if (file_exists($className . '.php')) {              include $className . '.php';//可細化          } else {              echo $className . '.php is not exists.';              exit;          }      }            $indexController = new IndexController();   在程序的運行過程中,php會檢測這個$className類是否已經加載,如果沒有加載會去執行__autoload(),再去加載$className這個類。在實例化類的對象、訪問類中的靜態變量和方法等都會去檢測類是否已經加載,是否有定義__autoload()函數,如果都沒有就會報錯。   在復雜點的系統中,用__autoload()來實現類的自動加載可能會很復雜。   2. spl_autoload_register()   [php]   <?php   spl_autoload_register();   $index = new Index();   spl_autoload_register()函數中沒有參數,則會自動默認實現void spl_autoload ( string $class_name [,string $file_extensions ] )函數,默認支持.php和.ini   [php]   function load1($className) {       //include   }   function load2($className) {       //include   }      spl_autoload_register('load1');//注冊到<span class="methodname">spl_autoload_functions</span>   spl_autoload_register('load2');      $index = new Index();   會先通過load1去加載類,如果load1中沒有,再通過load2去加載,如果還有以次類推。   實現一個自動加載方法比較多,這舉例一個       [php]   <?php   class autoloader {          public static $loader;          public static function init()       {           if (self::$loader == NULL)               self::$loader = new self();              return self::$loader;       }          public function __construct()       {           spl_autoload_register(array($this,'model'));           spl_autoload_register(array($this,'helper'));           spl_autoload_register(array($this,'controller'));           spl_autoload_register(array($this,'library'));       }          public function library($class)       {           set_include_path(get_include_path().PATH_SEPARATOR.'/lib/');           spl_autoload_extensions('.library.php');           spl_autoload($class);       }          public function controller($class)       {           $class = preg_replace('/_controller$/ui','',$class);                      set_include_path(get_include_path().PATH_SEPARATOR.'/controller/');           spl_autoload_extensions('.controller.php');           spl_autoload($class);       }          public function model($class)       {           $class = preg_replace('/_model$/ui','',$class);                      set_include_path(get_include_path().PATH_SEPARATOR.'/model/');           spl_autoload_extensions('.model.php');           spl_autoload($class);       }          public function helper($class)       {           $class = preg_replace('/_helper$/ui','',$class);              set_include_path(get_include_path().PATH_SEPARATOR.'/helper/');           spl_autoload_extensions('.helper.php');           spl_autoload($class);       }      }      //call   autoloader::init();   ?>   也可以根據自己的需要來設計實現

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