本系列目錄
一、Phalcon在Windows上安裝 《Phalcon入坑指南系列 一》
二、Phalcon入坑必須知道的功能《Phalcon入坑指南系列 二》
三、Phalcon如何切換資料庫《Phalcon入坑指南系列 三》
前言

使用Phalcon框架大多數都是為了其多模組功能來的,今天來聊聊Phalcon多模組如何使用。
依然是一步一個坑,使用這個框架就是痛並快樂著,一邊承受坑帶來的痛苦,一邊享受解決坑的快樂。
一、建立一個多模組應用
使用命令先來創建出一個多模組的專案phalcon create-project kakaModules modules

可以看到生成的專案只有一個預設的frontend模組。
在frontend模組的index控制器中先來試試訪問先,看多模組是如何訪問的。

跟咔咔想的結果是如出一轍,就是預設進的這個模組的index方法。
先按照常理出牌,按照正常方式看是否會正常訪問
在app/modules/frontend/controllers/IndexController.php
這個檔案裡邊建立一個kaka方法

進行訪問測試

看來Phalcon還是迎合大眾的胃口的。
二、注意:當你多模組無法訪問怎麼辦
還記得在第一期文章中將單模組建立好了之後對Nginx修改了一次配置。
這個也是官方給提供的配置,按理說如果配置好了,後邊就是再建立多模組也不會影響什麼。
咔咔就是走了不尋常之路,重新配置了一個虛擬域名,但沒有修改Nginx配置,所以一直提示無法訪問。
如果你也出現瞭如下介面,則看看自己是否配置了Nginx

可以看到跟上文的訪問路徑是一致的,就會出現這樣的情況。一定要看看是否配置了Nginx。
下圖是咔咔的配置,如有需要可以直接複製拿過去使用。

最重要的也就只有一行配置
try_files $uri $uri/ /index.php?_url=$uri&$args;
三、如何建立屬於自己的一個模組
使用命令來建立一個屬於自己的模組phalcon module --name kaka --namespace=kaka --output=app/modules

創建出來的kaka模組,你可以看到在controller中是沒有檔案的,那麼這個檔案是否可以用命令來進行建立呢?
那肯定是可以的嘍!phalcon controller --name index --output=app/modules/kaka/controllers

檔案到手天下我有,先來訪問一波看是否可以。

這可是真無情,但也無妨。根據報錯資訊可得知KakaModules\Modules\Frontend\Controllers\KakaController handler class cannot be loaded
訪問路徑莫名其妙進入到了系統預設的frontend模組。
先不管這個錯誤是怎麼發生的,先來看看創建出的檔案是不是有問題,非常明顯的一個問題就是沒有名稱空間。
先給控制器加上名稱空間先。

此時還需要十分注意的是module這個檔案,此檔案是非常重要的,同樣也要新增對應的名稱空間。

這一切做完之後再回來看這個問題。

接下來的處理方式非常重要,也是當發現一個問題時應該如果應對的方式。
當看到這個問題時,一定要反應出來的第一個點就是為什麼別的模組也進入到了系統的預設模組。
那麼你就需要反應到是系統肯定在哪裡設定一個預設訪問模組。
在單模組時我們知道了在server檔案中加了非常多重要的資訊,接下來看看。

果不其然在這個檔案中找到了設定了預設的訪問模組。
當把這個配置取消之後發現又出現了另一個錯誤。

給出的資訊就是找不到view這服務。
這個問題估計很多小夥伴就對這個錯誤無休無止的進行試錯了,這個問題直接給大家解決方案。
試想一下,多模組肯定是要進行註冊的,否則根本就無法對應的,這個操作當然也不是命令列直接生成好的,從建立控制器就可以得知,命令列生成檔案還是需要進行簡單處理一下才能直接使用的。
咔咔最終是在這個檔案中找到了註冊模組的位置,然後加上我們自己的模組即可。

此時再來進行訪問,依然沒有成功,還是報錯。

真是一步一個坎吶!此時給出的錯誤又是這個模型沒有在容器中。
說實話這個框架的便利之處還沒發現,反正就是一步一步坑。
直接在loader檔案中加上下圖程式碼即可。

此時再進行訪問。

真的是很不容易啊!經歷了一步一步的摸索終於將多模組打通了。
四、建立了一個多模組後都應該做那些操作
第三節是咔咔一邊分析一邊修改程式碼,直至最後成功的結果。
為了大家可以直接看到操作流程,重新開了一個目錄給大家方便查閱。
phalcon module --name kaka --namespace=kaka --output=app/modules
創建出一個kaka的模組phalcon controller --name index --output=app/modules/kaka/controllers
給kaka模組建立一個index控制器修改控制器index和module的名稱空間 在檔案 app/bootstrap_web.php
新增kaka模組server_web的預設模組中的預設目錄可不用註釋 在檔案 app/config/loader.php
中方法registerClasses
進行新增模組資訊。
以上就是建立一個自己的模組執行流程。
五、總結
本文主要講解的是在Phalcon框架中使用命令列創建出自己的模組,並且可以進行訪問。
這點內容也是折騰了咔咔近倆個小時,再用點時間爭取把這個框架給弄明白。
“
堅持學習、堅持寫作、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大網際網路中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。
”