LotusPhp學習一:初識LotusPhp


  接觸LotusPhp是從淘寶開放平台開始的,最早是為自己的網店做一個商品添加的程序,最初是用的浪子的TaoApi,但是這個程序基本不更新了,加上淘寶開放平台總是變來變去,官方的SDK默認包含的就是LotusPhp。

  學習LotusPhp是有一定難度的,沒有文檔,只有一些組件的范例,感覺更像是一些類庫的集合,而不像一個框架,缺乏一個統領整個類庫的范例,雖然example里有一個通訊錄的范例,但是沒有用到所有的組件,比HelloWorld強點而已,對於其框架的理解和運用感覺還是用處不太大。

  不過我還是比較喜歡這個框架的,這個框架是最初淘寶的員工覃健祥開發的,后來一群愛好者加入了開發小組,總體來說在開源社區里關注度比較低,比較冷門些。不過瑕不掩瑜,LotusPhp在我看來,是一個比較優秀的框架,其中一些亮點如下:

  1.各個組件相互獨立,你可以自行豐富LotusPhp的組件到自己的項目中。很多框架的組件關聯度比較高,基本上是牽一發而動全身,一般是很難對框架做修改的,你可以用,但是符合不符合你的項目要求,那就是另外一碼事了。LotusPhp很好的避免了這樣的問題,在設計的時候就是按獨立的類庫來進行設計構思,最后用膠水代碼Lotus.php來進行粘合,形成完整的框架。你可以獨立修改某個類庫來更適合自己的項目需求,也可以用一些比較好的類庫,甚至是其他的一些框架的,比如ZF,Symfony等這些設計上也相對獨立的類庫直接拿來補充豐富LotusPhp的組件。

  2.LotusPhp可以和其他php框架搭配使用,用LotusPhp的Autoloader直接加載和緩存其他類庫即可,而且還不用再費心的調用路徑之類的了,不過這個不是我學習LotusPhp的目的。

  3.Db組件支持多種數據庫,支持多數據庫,支持主從數據庫,在數據庫的操作上,LotusPhp可謂是一枝獨秀。目前LotusPhp支持MySql、SQLite、PostgreSQL這三種常用的數據庫,當然你可以按照Db組件的規范添加其他數據庫的支持。使用LotusPhp的Db組件在系統平滑升級上會有優異的表現,起碼不用到了瓶頸再去換框架或者再去重新設計構架重寫代碼,只要升級系統構架,添加多數據庫的支持即可,改動很小。值得稱道的一點就是Db組件的SqlMap,這個可以集中管理所有的Sql,便於DBA進行管理和升級,而不是不停的在源代碼中翻Sql語句,利於大公司中不同的崗位協作。想着DBA改下Sql語句,性能就大幅提升的感覺一定很爽吧!

  4.優良的角色安全機制也是一大亮點,用戶可以具備多種用戶角色,可以根據需要進行角色組合。比如前台是普通用戶,后台是編輯,設置兩個用戶角色就夠了。

  5.緩存支持也表現優異,目前支持Apc、EAccelerator、Memcache、Memcached、Xcache以及文件緩存,可以根據需求進行配置升級。

  6.Autoloader是LotusPhp最重要的一個組件,也是他的非常重要的一個優點。只要聲明了Lotus組件,就可以自動加載所有緩存的類庫,不用擔心路徑,不用考慮調用的問題,直接使用類庫和函數即可。我有很多Php程序員的朋友拿到我寫的LotusPhp項目的代碼感到無從下手,找不到調用的路徑,不知道調用的是哪個文件和類庫,是不是很牛逼的啊?O(∩_∩)O哈哈~

  7.升級快速,多數框架因為關聯性比較強,所以不太容易大幅度升級。即便升級了,可能和原來的框架兼容性不好,很多老框架寫的應用導致沒有辦法用新框架平滑升級。LotusPhp不存在這個問題,每個組件相互獨立,只要某個組件升級了,你就可以升級,而且對象接口在構架的時候就已經規定下來了,基本是框架內部升級,應用內調用沒有任何不同,所以使用LotusPhp幾天升級一次都不是神馬稀罕事。

  不過LotusPhp也有很多自身的問題,是無法回避的,主要有以下幾點:

  1.沒有文檔和完整的范例,對於初學者極其不友好,入門不太容易。LotusPhp開發組的成員貌似都比較忙,抑或是天生不怎么會寫文檔,框架出了N年了,至今沒有一個良好的文檔,和比較完整的范例。對於不懂設計模式,沒有接觸過框架的程序員,學習LotusPhp會比較困難,我就是一行一行注釋代碼,把所有代碼通讀了一遍才算入的門。

  2.組件不是很完善,很多需求只能靠自己完善,比如上傳組件、郵件、多語言、WebService、搜索等還是需要自己來進行構建。我和開發組溝通過,后續還是會增加諸如搜索,支付等組件的。

  3.個別已有組件功能還不夠完善,有的不能滿足個性化的需求。比如session組件目前就比較雞肋,暫時只支持SQLite存儲和文件存儲,Mysql存儲session已經在構建中,不過暫時還沒有實現。還有Captcha組件無法實現客戶端Ajax驗證,因為驗證碼只能驗證一次,驗證完就失效,客戶端驗證了,服務器端就不能驗證了,所以暫時客戶端沒有辦法實現驗證碼的驗證。當然其他組件也或多或少存在一些問題,以后的文章中會有表述。

  4.RBAC目前只能通過多角色來實現用戶權限的組合,沒有辦法實現更加復雜的權限自定義,如果要實現自定義權限,想來就得把驗證內容存儲到數據庫中去了,在初始化組件的時候調用驗證用戶權限,還有種辦法,就是放棄RBAC組件,用自己的辦法構建用戶權限驗證方法,然后在MVC中加載。

  5.每個組件都是通過配置文件是進行初始化並規范的,這也制約了LotusPhp在快速更新配置的方式上只能通過FTP或者更復雜的編程方式來實現。這就注定了LotusPhp更適合一些穩定要求高,程序升級頻繁的中型程序使用。一些小應用用這個只能感覺不太順手。

  6.可能還是由於文檔的原因,人氣始終不高,在一眾Php框架中感覺比較冷門,比較非主流一些,社群交流始終不夠熱烈。作者覃健祥目前在一淘工作,旺旺群里一般都在線,會解答一些關於LotusPhp的問題。

  最后附上一些LotusPhp的資源

  LotusPhp 旺旺群:109954293

  LotusPhp QQ群:273709480

  LotusPhp 谷歌Code Wiki:http://code.google.com/p/lotusphp/w/list  目前已經遷移到Github,不過谷歌上的Wiki上很多組件的使用還是比較有參考價值的

  LotusPhp Github項目:https://github.com/qinjx/lotusphp

  LotusPhp 程序構架:http://www.yylog.net/lotusphp/doc/index.html 該網站站長也是 LotusPhp 開發組成員之一

  LotusPhp 程序構架解讀:http://www.yylog.net/lotusphp/api/

  淘掌門:http://www.taozhangmen.net/  這是一個比較完整的開源的LotusPhp項目源碼,有很好的參考價值,不過組件也運用的不全

  金海馬網上商城:http://www.kinhom.com/  這是LotusPhp開發的一個在線商城,沒有開源的代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM