在攻讀研究所時期選修了一門Web Engineer的課。當時課程是java servlet+ Tomcat + Mysql開發一個類似facebook的社群網站。講課的老師提起過框架,說框架的用途在於減少自己早輪子的時間。而學習框架成本在於讀Documentation,通常需要一個月的時間去學習摸索。但不以為然,徒手搭積木才是酷炫,才牛逼。
真正接觸框架這個東西,還是2015年初,剛開始進入工作。當時使用了曾經NXP實習期間聽來的一個框架Cakephp。 Cake早期的想法是百分之百繼承RoR (Ruby on Rails),如migration、command line。當然被人們詬病的是Cake資料封裝模式,偏向關係型資料庫。雖然Cakephp可能沒有Lavare那麼知名,但是核心開發人員,社群活躍度以及問答社群的問題依舊很多。
對剛接觸建站的朋友,Cakephp的開發很有效率,擴充方便。以及對於勵志成為架構師的童鞋,閱讀Cakephp核心程式碼的學習價值,個人認為很高。初期透過對Cakephp封裝的API使用,了解一般MVC架構的基本模組與功能。在進階的過程中,閱讀核心程式碼,從而理解其中的設計原理。最後透過優化程式碼,達到融匯貫通的地步。筆者作為一名初出茅廬的phper,同樣也在開發中摸索和努力,希望為能夠閱讀到此文的諸君提供自己的所思所想,與君一同進步。
這個系列主要以翻譯Cakephp 3 Cookbook為主,著重介紹使用Cakephp 3的開發專案過程中的體會,同時穿插介紹Cakephp 3的特色。希望透過介紹翻譯Cakephp 3, 為Cakephp做一些小小的貢獻,也希望透過這個系列認識志同道合的朋友。
在進入細節之間,我們先了解快速的講述一些Cakephp 3的功能。
1). 命名約定(Naming Conventions)
Cake,如同RoR,Django等框架,提供一套完整MVC約定名稱。使用命名約定,可以方便地使用Cake提供的一些功能。同時對於專案之後程式碼的維護也有幫助。對於開發過程,命名約定有助於開發效率。
2). 資料層(Model)
Cakephp 3的資料層相較於Cakephp 2,有了明顯的提升。不僅支援MYSQL,PostgreSQL,Microsoft SQL Server,SQLite等,同時ORM提供兩種不同的資料CRUD API。使用者可以使用原生的SQL語句呼叫資料庫,靈活地處理query。 Entity處理類別提供一套封裝的API,使用API可以安全地處理資料。
3). 視圖層(Views)
視圖層提供基本的資料展現。模板以及擴充模組有效率地簡化程式碼,使前端程式碼更加簡潔,可以重複利用。同時視圖層提供了完整的RESTFUL應用,包括XML,JSON等資源,可以透過URI的形式,為網站提供web server。
4). 控制層(Controllers)
控制層作為核心邏輯層,有效的是資料層和視圖層結合。重要的演算法處理,可以在這個層實現和完善。