通過composer組件化學習PHP框架道路(一)

進度匯報與階段疑問(一)

  • 這個框架本打算暑假開始搭建,可最近心里老是想起這件事,于是今天早上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組件,剛開始就不考慮這件事吧。

關于靜態方法在此處使用的原因,不知道自己的理解有哪里不妥當和不完善之處。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,969評論 19 139
  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 3,970評論 1 66
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,441評論 25 708
  • 10:10 腦子里時常跳出很多想法 因為霧霾太過嚴重,單雙號出行,給路面交通帶來的便利感,真是讓人覺得幸福。 即便...
  • 這兩日天兒太任性 昨天暖暖的脈脈含情 今天的風聲卻讓人膽戰心驚 接下來的幾天都沒有春的蹤影 冬在春的地盤如此放縱 ...
    張文莉閱讀 606評論 1 3