spl_autoload_register()函數

來源:互聯網
上載者:User

標籤:

spl_autoload_register — 註冊給定的函數作為 __autoload 的實現

bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

 

參數autoload_function欲註冊的自動裝載函數。如果沒有提供任何參數,則自動註冊 autoload 的預設實現函數spl_autoload()。throw此參數設定了 autoload_function 無法成功註冊時, spl_autoload_register()是否拋出異常。prepend如果是 true,spl_autoload_register() 會添加函數到隊列之首,而不是隊列尾部。

 

在瞭解這個函數之前先來看另一個函數:__autoload。  

一、__autoload  

這是一個自動載入函數,在PHP5中,當我們執行個體化一個未定義的類時,就會觸發此函數。看下面例子:  

printit.class.php  <?php  class PRINTIT {   function doPrint() {  echo ‘hello world‘; }}?>  
------------------------>index
.php <?function __autoload( $class ) { $file = $class . ‘.class.php‘; if ( is_file($file) ) { require_once($file); }} $obj = new PRINTIT();$obj->doPrint();?>

運行index.php後正常輸出hello world。在index.php中,由於沒有包含printit.class.php,在執行個體化printit時,自動調用__autoload函數,參數$class的值即為類名printit,此時printit.class.php就被引進來了。  

在物件導向中這種方法經常使用,可以避免書寫過多的引用檔案,同時也使整個系統更加靈活。  

二、spl_autoload_register()  

再看spl_autoload_register(),這個函數與__autoload有與曲同工之妙,看個簡單的例子: 

<?function loadprint( $class ) { $file = $class . ‘.class.php‘;   if (is_file($file)) {    require_once($file);   } }  spl_autoload_register( ‘loadprint‘ );  $obj = new PRINTIT();$obj->doPrint();?>

將__autoload換成loadprint函數。但是loadprint不會像__autoload自動觸發,這時spl_autoload_register()就起作用了,它告訴PHP碰到沒有定義的類就執行loadprint()。 

 

spl_autoload_register() 調用靜態方法 

<?  class test { public static function loadprint( $class ) {  $file = $class . ‘.class.php‘;    if (is_file($file)) {     require_once($file);    }  }}  spl_autoload_register(  array(‘test‘,‘loadprint‘)  );//另一種寫法:spl_autoload_register(  "test::loadprint"  );  $obj = new PRINTIT();$obj->doPrint();?>

 

spl_autoload_register()函數

聯繫我們

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