進度匯報與階段疑問(一)
- 這個框架本打算暑假開始搭建,可最近心里老是想起這件事,于是今天早上5:37起床開電腦把開頭的準備工作搞定了。
進度匯報
首先是composer項目的初始化我沒有用使用composer init,而且通過composer.json開始項目。然后新建app框架應用目錄,config項目配置目錄,public前端訪問目錄,framework自定義類庫。接著立刻開始github尋找合適了composer路由組件,考慮到初步學習就找了個加注釋僅有163行代碼的Macaw。然后前端建立index.php引入composer自動加載文件和config/routes.php路由配置文件,并在routes.php中使用Macaw調用不存在的靜態方法get,第一個參數'/index',在閉包函數中輸出字符串。
這個時候通過修改hosts和vhost.conf將qframe.dev映射到本地public目錄,我這里使用的是apache。訪問該虛擬域名/index發現并沒有成功輸出字符串,但是訪問index.php/index 卻可以。這是因為apache的rewrite module開啟后還需要書寫.htaccess請求轉發文件,這個步驟是apache偽靜態的內容,我就直接把laravel的這個文件cp過來用了。
這時候用postman測試restful常用四大方法都沒問題,路由部分就結束了。開始控制器和路由的關聯。在app中新建Controllers并書寫基礎控制器和測試控制器,路由和控制器中的寫法和laravel使用的寫法類似,再次訪問網址直接看不到界面了,這是因為composer.json沒有加入自動加載配置。添加autoload鍵值對并使用classmap數組加載控制器目錄,然后執行dump-composer更新鎖文件即可。
接下來進入一個本可以很麻煩的階段:數據庫操作。由于RESTful以資源實體為目標,我將Model修改為具體的Entities,也方便后期分層添加Model層的其他處理目錄。暫時我只能在控制器中連接數據庫進行CURD操作,后期再來依賴注入。那么我們新建數據庫,數據表,插入數據,然后在Entities中建立Article.php文章實體,composer.json的classmap數組加載該目錄。
在Article的first靜態方法中連接數據庫并返回查詢到的數據,在控制器中直接Article::first()即可。關于為什么使用靜態方法,這一點我認為是防止后續還需要這段數據,減少查庫操作。
階段疑問
.htaccess書寫用到了正則表達式且涉及到apache模塊的開發和使用問題,存在少許疑問。
Macaw.php一共就163行代碼,暫時沒有完全理解使用原因。
關于composer的autoload四種方式不太理解,以及spr-0在此處的兼容性使用。
關于數據庫部分的配置和CURD操作封裝問題,還需要學習一種composer組件,剛開始就不考慮這件事吧。
關于靜態方法在此處使用的原因,不知道自己的理解有哪里不妥當和不完善之處。