php spl_autoload_register函數介面

來源:互聯網
上載者:User

spl_autoload_register

(PHP 5 >= 5.1.2) spl_autoload_register — 註冊__autoload()函數

 

說明

bool spl_autoload_register ([ callback $autoload_function ] )

將函數註冊到SPL __autoload函數棧中。如果該棧中的函數尚未啟用,則啟用它們。 如果在你的程式中已經實現了__autoload函數,它必須顯式註冊到__autoload棧中。因為 spl_autoload_register()函數會將Zend Engine中的__autoload函數取代為spl_autoload()或spl_autoload_call()。

 

註:SPL是Standard PHP Library(標準PHP庫)的縮寫。它是PHP5引入的一個擴充庫,其主要功能包括autoload機制的實現及包括各種Iterator介面或類。SPL autoload機制的實現是通過將函數指標autoload_func指向自己實現的具有自動裝載功能的函數來實現的。SPL有兩個不同的函數spl_autoload, spl_autoload_call,通過將autoload_func指向這兩個不同的函數地址來實現不同的自動載入機制。

 

參數

 

autoload_function

欲註冊的自動裝載函數。如果沒有提供任何參數,則自動註冊autoload的預設實現函數spl_autoload()。

 

傳回值

成功時返回 TRUE, 或者在失敗時返回 FALSE.

 

當PHP找不到類檔案會調用這個方法,當註冊了自己的函數或方法時,PHP不會調用__autoload()函數,而會調用自訂的函數

通過該函數實現自動載入,很多架構就用這種方法自動載入類

範例:

<?php<br />spl_autoload_register(function($class) {<br /> $file = $_SERVER['DOCUMENT_ROOT'].'/predis/lib/'.strtr($class, '//', '/').'.php';<br /> if (file_exists($file)) {<br /> require $file;<br /> return true;<br /> }<br />});</p><p>$single_server = array(<br /> 'host' => '192.168.131.169',<br /> 'port' => 6379,<br /> 'database' => 0<br />);</p><p>// 自動載入Client類及所依賴的類<br />$redis = new Predis/Client($single_server);</p><p>$category1 = json_encode(array("id" => "1000211","category" => "國內新聞"));<br />$category2 = json_encode(array("id" => "1000212","category" => "國際新聞"));<br />$category3 = json_encode(array("id" => "1000213","category" => "娛樂新聞"));<br />$category4 = json_encode(array("id" => "1000214","category" => "娛樂新聞"));<br />$category5 = json_encode(array("id" => "1000215","category" => "娛樂新聞"));</p><p>echo $redis->zadd('news.category',1000211,$category1).'<br>';<br />echo $redis->zadd('news.category',1000215,$category5).'<br>';<br />echo $redis->zadd('news.category',1000212,$category2).'<br>';<br />echo $redis->zadd('news.category',1000214,$category4).'<br>';<br />echo $redis->zadd('news.category',1000213,$category3).'<br>';</p><p>//$category = $redis->zcount('news.category',1000212,1000214);<br />$category = $redis->zrangebyscore('news.category',1000212,1000214);<br />foreach($category as $value)<br />{<br />var_dump(json_decode($value)).'<br>';<br />}</p><p>var_dump($redis->zcard('news.category'));</p><p>var_dump($redis->zscore('news.category',$category3));</p><p>var_dump($redis->zrangebyscore('news.category',1000214,1000214));<br />?>

 

聯繫我們

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