多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > ZendFramework > Zend Framework教程-Autoloading使用方法

Zend Framework教程-Autoloading使用方法

來源:程序員人生   發布時間:2014-01-28 23:41:45 閱讀次數:3562次

通常,只需將需要引入包含類,然后實例化它即可。由于Zend_Loader_Autoloader采用的單例模式,可以使用getInstance()方法來獲取一個實例。

require_once 'Zend/Loader/Autoloader.php';Zend_Loader_Autoloader::getInstance();

默認情況下,可以加載命名空間前綴為"Zend_"或 "ZendX_"的任何類,只要確保已經指定include_path。

如果想使用其他的命名空間前綴?最好的,最簡單的方法是調用registerNamespace() 方法。您可以通過傳遞一個單一的命名空間前綴,或一個數組:

require_once 'Zend/Loader/Autoloader.php';$loader = Zend_Loader_Autoloader::getInstance();$loader->registerNamespace('Foo_');$loader->registerNamespace(array('Foo_', 'Bar_'));

或者,你可以把Zend_Loader_Autoloader作為一個“備用”自動加載器。這意味著如果命名空間無論是否定義,都會嘗試自動加載。

$loader->setFallbackAutoloader(true);
(注意:這種方式是不推薦的,盡量不要使用)。


 Zend_Loader_Autoloader的內部實現是使用 Zend_Loader::loadClass() 加載類的。該方法的使用 include() 來嘗試加載給定的類文件。 include()將返回一個布爾值,如果沒有成功返回FALSE - ??而且還發出PHP警告。 可能會導致以下問題:

如果啟用了display_errors,警告將包含在輸出中。

根據你所配置的error_reporting級別,它也可以輸出到日志中。

可以禁止這些錯誤消息,具體如下:(但注意,display_errors啟用時,錯誤日志將始終顯示。)

$autoloader->suppressNotFoundWarnings(true);




選擇一個Zend Framework的版本

ZendFramework/|-- 1.9.2/|   |-- library/|-- ZendFramework-1.9.1-minimal/|   |-- library/|-- 1.8.4PL1/|   |-- library/|-- 1.8.4/|   |-- library/|-- ZendFramework-1.8.3/|   |-- library/|-- 1.7.8/|   |-- library/|-- 1.7.7/|   |-- library/|-- 1.7.6/|   |-- library/

$autoloader->setZfPath($path, 'latest');

$autoloader->setZfPath($path, '1.8');

$autoloader->setZfPath($path, '1.7.7');

也可以使用配置文件

[production]autoloaderZfPath = "path/to/ZendFramework"autoloaderZfVersion = "1.7.7" [qa]autoloaderZfVersion = "1.8" [development]autoloaderZfVersion = "latest"

Autoloader接口


注:命名空間前綴和PHP命名空間
PHP5.3已經發布。該版本中,PHP現在已經正式支持命名空間。
然而,Zend Framework的命名空間和PHP 5.3的命名空間完全不同的。 Zend Framework中,提到的“命名空間”,是指一個類前綴。例如,所有的Zend Framework的類名稱的前綴“Zend_”。 這是我們指定的“命名空間”。
在Zend Framework 2.0.0使用了原生的PHP命名空間。

 

自動加載器除了能夠指定任意回調以外,Zend Framework還定義了一個需要自動加載類實現的接口Zend_Loader_Autoloader_Interface:



interface Zend_Loader_Autoloader_Interface{    public function autoload($class);}


如果您希望在Zend Framework中使用自定義的自動加載器,可以使用 Zend_Loader_Autoloader的 pushAutoloader()和unshiftAutoloader()方法。

通過這些方法將在Zend Framework的內部自動裝載器之后追加或之前使用自定義的加載器。

   每個方法接受一個可選的第二個參數,類的命名空間前綴。自動加載器只查找給定的類前綴。如果不是指定的類前綴,將跳過自動加載器 , 這可能是一種性能改進方式。


當使用這個接口時,你需要傳遞類實例到Zend_Loader_Autoloader類的pushAutoloader()和unshiftAutoloader()方法,具體如下:


// Append function 'my_autoloader' to the stack,// to manage classes with the prefix 'My_':$loader->pushAutoloader('my_autoloader', 'My_'); // Prepend static method Foo_Loader::autoload() to the stack,// to manage classes with the prefix 'Foo_':$loader->unshiftAutoloader(array('Foo_Loader', 'autoload'), 'Foo_');



// Assume Foo_Autoloader implements Zend_Loader_Autoloader_Interface:$foo = new Foo_Autoloader(); $autoloader->pushAutoloader($foo, 'Foo_');


Zend_Loader_Autoloader的相關方法



Zend_Loader_Autoloader Methods
MethodReturn ValueParametersDescription
getInstance()Zend_Loader_AutoloaderN/A

獲取實例

resetInstance()voidN/A

重置Zend_Loader_Autoloadersingleton實例的狀態,恢復它的原始狀態,注銷所有的自動加載器回調和所有注冊的命名空間。

autoload($class)string|FALSE
  • $class,required. A string class name to load.

試圖加載一個類。

setDefaultAutoloader($callback)Zend_Loader_Autoloader
  • $callback,required.

指定默認的加載器回調

getDefaultAutoloader()callbackN/A

獲取默認的加載器接口;默認是Zend_Loader::loadClass().

setAutoloaders(array $autoloaders)Zend_Loader_Autoloader
  • $autoloaders,required.

設置在自動加載器棧使用具體的自動加載器列表。自動加載器列表中的每個項目必須是PHPcallback。

getAutoloaders()ArrayN/A

 

getNamespaceAutoloaders($namespace)Array
  • $namespace,required

獲取所有已注冊的自動加載器來加載一個特定的的命名空間。

registerNamespace($namespace)Zend_Loader_Autoloader
  • $namespace,required.

注冊命名空間. If$namespace is a string, it registers that namespace; if it's an array of strings, registers each as a namespace.

unregisterNamespace($namespace)Zend_Loader_Autoloader
  • $namespace,required.


getRegisteredNamespaces()ArrayN/A


suppressNotFoundWarnings($flag = null)boolean|Zend_Loader_Autoloader
  • $flag,optional.

錯誤提示

setFallbackAutoloader($flag)Zend_Loader_Autoloader
  • $flag,required.

 

isFallbackAutoloader()BooleanN/A

 

getClassAutoloaders($class)Array
  • $class,required.

 

unshiftAutoloader($callback, $namespace = '')Zend_Loader_Autoloader
  • $callback,required. A valid PHPcallback

  • $namespace,optional. A string representing a class prefix namespace.

 

pushAutoloader($callback, $namespace = '')Zend_Loader_Autoloader
  • $callback,required. A valid PHPcallback

  • $namespace,optional. A string representing a class prefix namespace.

 

removeAutoloader($callback, $namespace = '')Zend_Loader_Autoloader
  • $callback,required. A valid PHPcallback

  • $namespace,optional. A string representing a class prefix namespace, or an array of namespace strings.




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品性夜夜夜 | a亚洲视频 | 毛片免费观看网址 | 伊人久久精品成人网 | 欧美一级视频精品观看 | 欧美高清另类videosbestsex | 欧美第一区| 国产亚洲福利精品一区二区 | 婷婷五月在线视频 | 一区二区三区在线 | japanesexxx在线播放 | 欧美国产成人精品一区二区三区 | 婷婷激情五月 | 美美女高清毛片视频黄的一免费 | 成人ab片| 主播福利视频在线观看网址 | 国产免费高清视频在线观看不卡 | 日韩精品手机在线 | 亚洲国语 | 操操操操网 | 国产精品成人久久久久 | 性激烈的欧美三级视频中文字幕 | 99一级毛片 | 中文字幕在线永久在线视频2020 | 黄网址大全免费观看免费 | 中文字幕亚洲欧美 | 免费福利在线观看 | 视频一区二区三区欧美日韩 | 国产免费播放一区二区 | 97精品伊人久久久大香线焦 | 日韩精品一区二区三区毛片 | 毛片毛片毛片毛片出来毛片 | 无人精品乱码一区二区三区 | 日本成人免费在线视频 | 最近中文字幕免费在线看 | 亚洲小说区图片区另类春色 | 国产色a在线观看 | 精品久久久久久影院免费 | 亚洲欧洲久久精品 | 亚洲欧美综合色区小说 | 中文字幕一区2区 |