成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Zend Framework中的AutoLoad機制

開發 后端
在使用zend framework的時候,最先引入的一定是AutoLoad的機制,這里就想分析下Zend的AutoLoad是怎么引入的。

代碼示例

  1. set_include_path(USVN_LIB_DIR . PATH_SEPARATOR . get_include_path()); 
  2. require_once 'Zend/Loader/Autoloader.php'
  3. $autoloader = Zend_Loader_Autoloader::getInstance(); 
  4. $autoloader->registerNamespace("Zend_"); 
  5. $autoloader->registerNamespace("USVN_"); 
  6. $autoloader->registerNamespace("menus_"); 
  7. $config = new USVN_Config_Ini(USVN_CONFIG_FILE, USVN_CONFIG_SECTION); 

過程分析

首先是設置了include_path,include_path就是php中調用include的時候文件尋找的地址

下面就是 require_once 'Zend/Loader/Autoloader.php';

在Zend/Loader/Autoloader.php文件內,讀入了Zend/Loader.php, 這個php定義了Zend_Loader這個類,這個類包含了loadClass,loadFile, isReadable(文件是否可讀)等函數實例化Zend_Loader_Autoloader的過程就是調用其構造函數(這里是使用了單例模式)的過程它的構造函數中的spl_autoload_register(array(__CLASS__, 'autoload'));將Zend_Loader_Autoloader:autoload作為類自動加載函數。還做了一個操作將_internalAutoloader賦值了自身的_autoload

至于這里面是怎么autoload的等會根據具體例子查看

接下來調用了Zend_Loader_Autoloader:registerNamespace("USVN_"),這個函數做的事就只是在Zend_Loader_AutoLoader的內部屬性_namespaces上掛載一個key為USVN_和value為true的值。

看到這個函數就明白其實代碼也可以寫成

$autoloader->registerNamespace("Zend_")->registerNamespace("USVN_") 

或者

$autoloader->registerNamespace(array("Zend_","USVN_"))

好了,現在到調用 USVN_Config_Ini類了

這個類自然走的就是Zend_Loader_Autoloader:autoload("USVN_Config_Ini")這個函數***步會去調用getClassAutoloaders獲取這個類的AutoLoader。getClassAutoloaders里面增加了對namespaceAutoloader的選擇和判斷,由于我們很少使用,直接跳過這里返回的loader打印出來是這樣的

Array ( [0] => Zend_Loader_Autoloader Object ( [_autoloaders:protected] => Array ( ) [_defaultAutoloader:protected] => Array ( [0] => Zend_Loader [1] => loadClass ) [_fallbackAutoloader:protected] => [_internalAutoloader:protected] => Array *RECURSION* [_namespaces:protected] => Array ( [Zend_] => 1 [ZendX_] => 1 [USVN_] => 1 [menus_] => 1 ) [_namespaceAutoloaders:protected] => Array ( ) [_suppressNotFoundWarnings:protected] => [_zfPath:protected] => ) [1] => _autoload )

其實就是前面設置的_internalAutoloader。

這里就會實際調用Zend_Loader_Autoloader:_autoload ("USVN_Config_Ini")

好了,現在就看到了Zend_Loader_Autoloader:_autoload函數

$callback = $this->getDefaultAutoloader();

這里會獲取默認的Autoloader,什么是默認的Autoloader? 看這個類初始定義,實際上是array('Zend_Loader', 'loadClass');

下面自然就調用的是call_user_func($callback, $class);即Zend_Loader:loadClass("USVN_Config_Ini")

首先Zend_Loader已經在AutoLoader.php中被require了

其次我們看看Zend_Loader:loadClass方法,這個方法***步是檢查異常,跳過。第二步是將類分隔,拼湊成$file, 比如USVN/Config/Ini.php,下面就直接調用self::loadFile($file, null, true);

接下來查看self::loadFile,首先_securityCheck看類名中是否有非法字符,沒有,就include了這個$file。這里的$file當然是相對路徑,需要拼接上include_path, 記得include_path是在哪里設置的嗎?在程序的一開始就設置了!好了,這里就把USVN_Config_Ini這個類讀取進來了。

看到這里你就該明白了,如果你自己定義了一個類,并且注冊了Namespace,比如USVN,那么你就應該在include_path下面創建一個同名文件夾(大小寫必須區分),然后你要引入的相對的文件路徑名就是以類名的_做分隔讀入的。

到這里AutoLoad機制就閱讀完了。

原文鏈接:http://www.cnblogs.com/yjf512/archive/2012/08/01/2619100.html

【編輯推薦】

  1. 為您介紹5個 PHP 安全措施
  2. PHP5.5 將會帶來哪些新特征
  3. PHP 5.4.5和5.3.15發布,安全修復版本
  4. 漫談社區PHP業務開發 提高效率縮短開發周期
  5. 看PHP如何生成的條形碼

責任編輯:彭凡 來源: 博客園
相關推薦

2013-05-27 10:14:21

PHPZend FramewPHP編碼

2021-01-26 10:00:45

漏洞網絡安全網絡攻擊

2013-05-22 15:02:13

Zend Framew

2009-01-08 09:10:13

ZendRIAPHP

2010-01-06 15:35:01

.Net Framew

2009-08-26 14:52:19

.NET Framew

2010-01-05 16:10:21

.NET Framew

2010-01-06 19:38:16

.NET Framew

2009-08-18 11:08:24

.Net Framew

2010-03-10 11:00:26

Zend Studio遠程調試

2013-03-28 09:07:37

Android開發Intent機制

2009-07-16 15:02:33

Shapes命名空間Net Micro F

2017-05-15 19:40:40

AndroidIPC機制

2010-01-06 10:23:47

.NET Framew

2024-02-23 10:33:34

SpringBean容器

2011-03-11 14:47:16

Zend Optimi優化

2024-12-05 09:06:14

ORM框架.NET

2009-09-29 10:45:17

UnixLinuxshell

2009-12-09 13:41:50

PHP Zend框架

2009-05-26 09:09:50

.NET FramewStream.Read基礎類
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线免费观看视频 | h视频在线播放 | 成人高清在线 | 亚洲国产成人精品一区二区 | 毛片视频观看 | 天堂一区在线 | 人人人人干| 国产一区精品 | 一区二区在线不卡 | 亚州影院| 欧美自拍日韩 | 国产一级片精品 | 2019天天干天天操 | 国产成人精品一区二三区在线观看 | 国产成人综合一区二区三区 | 一级毛片在线播放 | 天天看天天操 | av免费入口 | 亚洲精品免费视频 | 国产成在线观看免费视频 | 国产一区二区三区久久 | 国产精品视频一区二区三区, | 就操在线 | 91久久精品国产91久久性色tv | 日韩视频专区 | 日韩电影一区 | 久草免费在线视频 | 亚洲精品在线免费观看视频 | 欧美三区 | 国产一区中文 | 国产欧美一区二区精品久导航 | 亚洲视频中文字幕 | 91精品国产91久久综合桃花 | 天天摸天天干 | 日韩欧美亚洲 | 日本免费一区二区三区四区 | 91在线免费视频 | 黄色电影在线免费观看 | 国产高清免费 | 国产精品视频500部 a久久 | 国产视频线观看永久免费 |