天天看點

Cakephp 3.x (前言-為什麼要使用使用架構)

在讀研究所學生時期選修了一門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)

控制層作為核心邏輯層,有效的是資料層和視圖層結合起來。重要的算法處理,可以在這個層實作和完善。

Cakephp 3.x (前言-為什麼要使用使用架構)