進度匯報與階段疑問(一)
- 這個框架本打算暑假開始搭建虑椎,可最近心里老是想起這件事对碌,于是今天早上5:37起床開電腦把開頭的準備工作搞定了栅哀。
進度匯報
首先是composer項目的初始化我沒有用使用composer init会通,而且通過composer.json開始項目丑婿。然后新建app框架應(yīng)用目錄性雄,config項目配置目錄,public前端訪問目錄羹奉,framework自定義類庫秒旋。接著立刻開始github尋找合適了composer路由組件,考慮到初步學(xué)習(xí)就找了個加注釋僅有163行代碼的Macaw诀拭。然后前端建立index.php引入composer自動加載文件和config/routes.php路由配置文件迁筛,并在routes.php中使用Macaw調(diào)用不存在的靜態(tài)方法get,第一個參數(shù)'/index'炫加,在閉包函數(shù)中輸出字符串瑰煎。
這個時候通過修改hosts和vhost.conf將qframe.dev映射到本地public目錄,我這里使用的是apache俗孝。訪問該虛擬域名/index發(fā)現(xiàn)并沒有成功輸出字符串酒甸,但是訪問index.php/index 卻可以。這是因為apache的rewrite module開啟后還需要書寫.htaccess請求轉(zhuǎn)發(fā)文件赋铝,這個步驟是apache偽靜態(tài)的內(nèi)容插勤,我就直接把laravel的這個文件cp過來用了。
這時候用postman測試restful常用四大方法都沒問題,路由部分就結(jié)束了农尖。開始控制器和路由的關(guān)聯(lián)析恋。在app中新建Controllers并書寫基礎(chǔ)控制器和測試控制器,路由和控制器中的寫法和laravel使用的寫法類似盛卡,再次訪問網(wǎng)址直接看不到界面了助隧,這是因為composer.json沒有加入自動加載配置。添加autoload鍵值對并使用classmap數(shù)組加載控制器目錄滑沧,然后執(zhí)行dump-composer更新鎖文件即可并村。
接下來進入一個本可以很麻煩的階段:數(shù)據(jù)庫操作。由于RESTful以資源實體為目標滓技,我將Model修改為具體的Entities哩牍,也方便后期分層添加Model層的其他處理目錄。暫時我只能在控制器中連接數(shù)據(jù)庫進行CURD操作令漂,后期再來依賴注入膝昆。那么我們新建數(shù)據(jù)庫,數(shù)據(jù)表叠必,插入數(shù)據(jù)荚孵,然后在Entities中建立Article.php文章實體,composer.json的classmap數(shù)組加載該目錄挠唆。
在Article的first靜態(tài)方法中連接數(shù)據(jù)庫并返回查詢到的數(shù)據(jù)处窥,在控制器中直接Article::first()即可嘱吗。關(guān)于為什么使用靜態(tài)方法玄组,這一點我認為是防止后續(xù)還需要這段數(shù)據(jù),減少查庫操作谒麦。
階段疑問
.htaccess書寫用到了正則表達式且涉及到apache模塊的開發(fā)和使用問題俄讹,存在少許疑問。
Macaw.php一共就163行代碼绕德,暫時沒有完全理解使用原因患膛。
關(guān)于composer的autoload四種方式不太理解,以及spr-0在此處的兼容性使用耻蛇。
關(guān)于數(shù)據(jù)庫部分的配置和CURD操作封裝問題踪蹬,還需要學(xué)習(xí)一種composer組件,剛開始就不考慮這件事吧臣咖。
關(guān)于靜態(tài)方法在此處使用的原因跃捣,不知道自己的理解有哪里不妥當和不完善之處。