前言
公司的APP響應速度比較慢,公司大神決定使用C語言編寫的PHP框架Phalcon 代替原來的框架,響應速度有比較大的提升。以前只是聽說過,沒有深入的了解過。即然工作中有用到,便花點時間了解了下,你啥都不懂,會被別人鄙視,需要不斷的充電補齊自己的短板啊!
第一感受
花了些時間看了phalcon 框架的文檔,對這個框架有了整體的一些認識,說下我的一些感受。
1 主體代碼C語言編寫,執行效率肯定比其它純PHP編寫的框架要高;
2 框架功能大而全,全棧式框架,WEB開發相關的組件都有,組件之間低耦合;
3 對象容器以及依賴注入的神奇使用,簡化代碼編寫;
4 很多組件使用適配器模式,方便自定義開發擴展,只要實現適配器接口即可;
5 安全可靠,對WEB常見漏洞提供了相應解決方案,這對團隊開發非常有幫助,想想最近一些脫庫事件,還是有些后怕,開發擁有安全意識非常重要;
6 PHQL類SQL數據庫查詢語言,查詢數據非常靈活,感覺這個沒啥用;
7 這個框架很靈活,沒有固定的范式,開發時可以任意組織代碼;
8 提供開發腳手架,枯燥重復的操作有相應的腳本代勞,是我懶人喜愛的:)
9 命令行執行任務控制台
10 事件管理器HOOK機制,這個用起來肯定很爽:)
11 基於角色簡單權限管理機制,對於資源權限管理不復雜的應用絕對足夠了
框架架構
以前接觸過比較多的框架,比如CI,Qeephp,Laravel等,發現大家的實現套路基本上差不多,無外乎在MVC三層架構基礎之上做些文章,實現的方式有差異而已。
單入口
通過一個入口處理客戶端響應,這個需要設置WEB服務器將所有動態腳本請求轉發到單一入口上
路由以及分發器
需要設置路由規則,以及路由對應的處理控制器和方法,找到匹配路由之后,通過分發器轉發執行,有一個路由組件和分發器組件實現這2個功能
控制器
用於對客戶端請求進行響應,用於連接模型和視圖對膠水
模型
業務邏輯層,數據的CRUD操作相關,模型之間的關聯關系管理
緩存層
使用適配器模式,后端支持主流的緩存服務,比如memache,redis ,mongodb 等,如果需要使用其它服務,可以自己擴展,實現適配器接口就行了
視圖
客戶端視圖渲染,層次結構,視圖繼承,支持內置模版以及自定義模版引擎
多語言
支持多語言,這個對公司業務主要是在海外很有幫助,話說自己實現也不難,也就一語言包而已,使用PHP數組就可以了:)
優勢
1 功能大而全
2 執行速度快
劣勢
1 學習成本高
2 需要安裝PHP擴展
3 相比純PHP框架維護成本大
適合場景
1 需要快速開發且對性能要求比較高
依賴注入
依賴的服務通過注入的方式獲得訪問,這個是Phalcon 框架的基礎,通過依賴注入,各組件之間可以做到低耦合,又能獲得其它服務的能力。依賴注入比較繞,初次了解可能會搞的暈頭轉向,熟悉了之后就好了。Phalcon 文檔對依賴注入說的很生動很具體,從問題開始入手,一步一步引導如何實現依賴注入。依賴注入實現原理:創建一個對象容器,注冊服務到對象容器,需要訪問服務的實例通過對象容器訪問服務,不同的語言實現方式不一樣。
后記
說的東西很理論,沒有相關實踐的部分,主要是我只看了文檔介紹,還沒有實際使用過,使用過程中會碰到什么坑,我現在說不清楚):以后有新系統開發或者業余搞的項目,會嘗試使用它!
參考資料
【1】Phalcon官方文檔
https://docs.phalconphp.com/en/latest/index.html
https://media.readthedocs.org/pdf/phalcon-php-framework-documentation/latest/phalcon-php-framework-documentation.pdf
【2】Phalcon官方網站
https://phalconphp.com/zh/
【3】Phalcon代碼庫地址
https://github.com/phalcon
