好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Yii框架中使用PHPExcel的方法分析

Yii框架中使用PHPExcel的方法分析

熱門標簽:怎么向銷售公司推銷外呼系統 仁和怎么申請400開頭的電話 長春人工外呼系統服務商 廣東地市地圖標注 廣州防封卡外呼系統多少錢一個月 高德地圖標注家 外呼系統撥打暫時無法接通 江西手機自動外呼防封系統是什么 哪里辦理400電話

本文實例分析了Yii框架中使用PHPExcel的方法。分享給大家供大家參考,具體如下:

PHPExcel是一個比較好用的php讀取excel文件的類庫,今天遇到了在yii中如何加載PHPExcel類文件的問題,因為Yii的autoload機制是安裝類名去找文件,即文件名就是相應的類名,而PHPExcel的類文件命名方式則是:dir_dir_classname.php,即文件名把文件的目錄名都記錄了,這種命名方式yii肯定識別不了。怎么辦?

其實PHPExcel也有自己的autoload方法(PHPExcel_Autoloader::load() ),通過查看源碼發現它也是通過spl_autoload_register函數注冊的(在PHPExcel_Autoloader::register() 中),而我們知道PHP的autoload機制是,所有用spl_autoload_register函數注冊的方法,都會在autoload時被spl_autoload_call函數執行一遍,因此我們只需要讓PHPExcel的autoload方法順利注冊上就行了。

如果了解Yii的autoload機制,不清楚的可以看 附錄 Yii的autoload機制 ,可以知道,只要設置Yii::$enableIncludePathfalse,第三方類庫就有了執行自己的autoload方法的機會,然后使用下面兩行代碼就能加載PHPExcel的類了:

Yii::$enableIncludePath = false;
Yii::import('application.vendors.phpexcel.PHPExcel', 1);

import時采用了force include的方式,這是因為PHPExcel.php在被require時才會注冊autoloader,如果等到new PHPExcel時才注冊,其他的類例如PHPExcel_IOFactory如果在這之前使用了,就會出現找不到類的錯誤。

個人認為我的這種辦法是比較方便且優雅的,對比網上的其他辦法好很多,下面列舉的辦法都或多或少有點問題,例如:

1、https://www.jb51.net/article/166128.htm,這種辦法先將Yii自己的autoloader unregister了,會造成yii自己的類加載不上

2、https://www.jb51.net/article/166132.htm,這種辦法還修改了PHPExcel的autoloader,代價很大。

附錄: Yii的autoload機制

Yii框架宣稱自己的類加載方式很高效,是真正的“用時加載”,那究竟特別在哪里?今天研究了一下源碼,發現其實是在代碼級加了一層“路徑緩存”。

我們知道,要實現自己的autoload方法,需要采用spl_autoload_register()函數注冊一個autoload方法,Yii注冊的這個方法是YiiBase::autoload(),稍后再講解這個方法的邏輯。另外,Yii一般都用Yii::import($pathAlias, $forceInclude=false)來加載相應的類(這個方法直接調用了YiiBase::import() ),這個方法配合YiiBase::autoload()就能實現“用時加載”了。

先說import的大致邏輯:

1、檢查self::$_imports數組是否存在相應的$pathAlias,如果有說明已經加載過了,直接返回類名或者目錄名;否則繼續第2步;

2、根據路徑別名獲得實際的路徑名,并根據路徑別名最后一部分是否是“*”可以知道要加載的路徑別名是否是一個文件,如果是文件,去第3步;否則去第4步;

3、如果是$forceInclude是true,則立即require這個文件,并在$_imports數組中增加一項$alias => $className;否則在數組$classMap中緩存一項$className => $realPath

4、對于路徑,會在數組$_includePaths中緩存這個路徑,并且在$_imports數組中增加一項$alias => $realPath

5、結束。

因為$forceInclude默認都為false,所以import不會立即加載相應的類,等到使用時才真正加載,這是YiiBase::autoload的工作。

autoload的大致邏輯:

1、檢查類名是否已緩存在$classMap或$_coreClasses數組中,如果是則直接require相應的文件路徑,$_coreClasses是框架自有類的映射表;否則去第2步;

2、檢測YiiBase::$enableIncludePath是否為false,如果是則去第3步,否則直接include($className . '.php')

3、遍歷$includePaths數組,將目錄名拼接上類名,檢查是否為合法的php文件,如果是則include,然后跳出循環

4、結束。

需要注意的是,文檔指出:如果要與其他類庫一起使用,必須將$enableIncludePath置為false,以便在Yii::autoload()失敗時,其他類庫的autoload方法有機會執行。

更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • Yii框架使用PHPExcel導出Excel文件的方法分析【改進版】
  • yii框架redis結合php實現秒殺效果(實例代碼)
  • 詳解PHP的Yii框架中擴展的安裝與使用
  • 詳解PHP的Yii框架中自帶的前端資源包的使用
  • php中yii框架實例用法

標簽:惠州 廈門 黔東 湘西 濮陽 海北 梅河口 文山

巨人網絡通訊聲明:本文標題《Yii框架中使用PHPExcel的方法分析》,本文關鍵詞  Yii,框架,中,使用,PHPExcel,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Yii框架中使用PHPExcel的方法分析》相關的同類信息!
  • 本頁收集關于Yii框架中使用PHPExcel的方法分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美日韩不卡中文字幕在线| 黄色污污小说| 欧美三级在线| 女教师潮喷弄出白浆在线播放| 国产美女挤奶水在线观看| 高清一级淫片a级中文字幕| 国产灌醉下药迷晕玩弄| 国产无套精品一区二区三区 | 国产东北妇女野战视频| 免费观看全黄做爰大片男男| 涩涩97在线观看视频| 久久国产精品久久久久久网站亲子| 国产三点都露的大尺度电影| 亚洲秘?无码一区二区三区电影| 免费?无码?国产在线观看亲嘴| 淫娇妻| 91久久国产柳州莫菁门| 秋葵草莓樱桃榴莲| 公园妇女大胆野外露出| 一级黄色影视| 男吃奶玩乳尖高潮30分钟视频| 蜜桃av色偷偷av老熟女| 现代三级完整版在线观看| 久久伊人影院| 亚洲天堂第一| 99re最新这里只有精品| 欧美一级做一级a做片性视频在线观看 | 激情综合婷婷久久啪啪田中宁宁| 黄色影院免费| 亚洲第一成年网| xxxxhd日本视频| 久久久久久精品美人片| 4399成人黄A片| 国产高清不卡一区二区| 成人福利免费在线观看| 国产福利一区二区| 网站黄免费| 久久爽人人爽av苍井空| 日韩乱码人妻无码中文字幕| 欧美男同激情| 天天干天天摸|