簡介
簡單的模板功能symfony是一個開源的PHP Web框架。基於最佳Web開發實踐,已經有多個網站完全採用此框架開發,symfony的目的是加速Web套用的創建與維護。
同時,它還包含了很多工具和類用以縮短開發複雜的網路套用的時間。
特點
它的特點如下:
簡單的模板功能
快取管理
自定義URLs
搭建了一些基礎模組
多語言與I18N支持
採用對象模型與MVC分離
Ajax支持
適用於企業套用開發。
框架
新機制
一個框架結構在程式語言之上加入了新的機制,並且這些機制能夠為許多特定的目標自動提供一些開發模式。一個框架結構同樣為編碼增加了結構,並且促使程式設計師編出更好、更易讀的、有持續性的代碼。一個框架結構能讓編程變得更加簡單,因為它把複雜的程式封裝成了簡明的陳述。
一個框架的發展通常是以它所使用的語言所延伸出來的。一個php5框架是由一系列的用php5寫成的檔案組成的。
層次
一個框架將為套用劃分出層次。從整體上來說,它可以將套用分為三個層次:
◆ 表現邏輯層(presentation logic) 用於處理用戶與軟體之間的互動
◆ 數據源邏輯層(data source logic) 提供了一個資料庫同其他數據提供者的聯繫通道。
◆ 範圍邏輯層(domain logic),或者叫事務邏輯層(business logic),這是剩餘的部分。它包括關於輸入的計算、處理表現層中的數據,以及根據從表現層收到的指令分派調度數據源邏輯層。
網路套用框架
網路套用框架致力於促進網路套用的開發(websites,intranets,等等)。建立一個基本的動態網站可以從現有的程式語言中輕易的實現,而PHP的知名就是由於它的簡易性被廣泛的套用。只需要php,你就可以查詢資料庫、管理會話(session,cookies)、訪問伺服器端檔案等等。而當你需要構建一個更加複雜的站點,當事務邏輯大大的增加了用於維護的編碼量的時候,你就需要一個網路套用的框架出現了。
優點
無論你是一個php5的專家還是一個在網路套用編程方面的新手都沒有問題,影響你決定的最主要因素是你項目的大小。
如果你只是想要開發一個簡易的5-10頁的站點,只需要有限的訪問資料庫和幾乎不考慮性能、可用性或文檔,那么你只需要單獨使用PHP。你將不會從網路套用的框架結構的特徵中獲的太多的益處,使用面向對象或MVC模式只會使你的開發變慢。Symfony運行在一個只有CGI支持的共享主機上將不會高效優異的運行。
另一方面,如果你開發大型的web套用,其中有大量的事務邏輯,那么單獨使用PHP是不夠的。如果你計畫將來維護和擴展你的套用,你需要編寫輕量級、易讀的和高性能的的代碼。如果你想直接使用最友好的用戶互動界面(AJAX),你不能只寫上數百行的Javascrīpt代碼。如果你想享受並且快速的開發,那么單獨使用PHP將是令人失望的。介於上述這些原因,symfony非常適合你。
當然,如果你是一個專業的web開發人員,你已經知道了web套用框架的所有優點,並且你需要一個成熟的,具有詳細文檔和一個大的團體支持。那么不要再猶豫,symfony就是你的解決方案。
特性
Symfony是一個完整的框架結構,設計用來幫助並加速網路套用的開發。
所包涵的觀念
它是基於以下的一些觀念的:
*儘可能的兼容更多的開發環境
*易於安裝和配置
*簡單易學
*企業級套用
*規定而非配置,支持回調
*在大多數情況下簡潔明了,但是有足夠的彈性為複雜情況做準備
*包含大多數網站的共性
*適應大多數 web “最佳實踐(best practices)” 和 web “設計模式(design patterns)”
*非常易讀的代碼、輕鬆維護
*開源
這些主要的基本概念突出了symfony的框架是使更多的公共任務自動完成,以使開發人員能夠完全專注於一項套用任務的特殊細節所在。而在每次一個新的web套用建立的時候不需要重新反覆勞動。
兼容的資料庫
為了實現這些需求,symfony完全由PHP5寫成。它已經徹底的在各種現實項目套用中被測試過,並且實際上已經套用於一些高要求的電子商務網站。它可以同大多數現有的資料庫兼容,具體如下:
*MySQL
*PostgreSQL
*Oracle
*MSSQL
*和其他資料庫(如果安裝了Creole驅動)
結構
symfony的對象模型依賴於以下三個獨立的層:
*資料庫抽象層(a database abstraction)
*對象關係映射層(an object-relational mapping)
*用於負責前台顯示和後台事務的 模型-視圖-控制器 模式層(a Model-View-Controller model for the front and back-office)
開發環境,和捆綁
另外為了滿足企業已有的編碼規範和項目管理規則,symfony可以全部重新用YAML配置檔案。它是默認提供的幾個開發環境,和捆綁:
*原型(prototyping)
*內容管理(content management)
*live configuration changes
*部署(deployment)
*單元測試(unit testing)
*套用測試(applicative testing)
*日誌記錄(logging)
*調試(debugging)
套用開源項目
Symfony用到了其他一些開源項目的代碼:
*Creole, 用於資料庫抽象層(for the database abstraction layer)
*Propel, 用於對象關係映射層(for the object-relational mapping layer)
*Mojavi, 用於MVC模型層(for the Model-View-Controller model layer)
web項目的公共特性
web項目的公共特性可以輕易的由symfony自動得到:
*國際化(internationalization)
*模板和助手(templating with helpers)
*表單確認(form validation)
*快取管理(cache management)
*購物車管理(shopping cart management)
*簡潔的路徑(smart URLs)
*scaffolding
*傳送郵件(email sending)
*分頁(Pagination)
*AJAX互動(AJAX interactions)
贊助
Sensio是Symfony的贊助商,它是一家法國Web代理商。起先Symfony使用Sensio Framework作為該項目的名字,因此代碼中所有的類名前都加上了"sf"前綴,當它決定以開源形式發布時,便以Symfony作為名稱(Symfony的英文縮寫也是sf)。
套用
一款開源的Q&A服務Askeet就是使用Symfony開發的。許多其他套用我去二無群多群無,包括擁有2000萬用戶的Yahoo Bookmarks,也是使用Symfony開發的。
發布
版本 | 發布日期 | 支持年限 | PHP版本 | 結束維護 | 備註 |
1.0 | 2007年1月 | 三年 | >= 5.0 | 2010年1月 | |
1.1 | 2008年6月 | 一年 | >= 5.1 | 2009年6月 | |
1.2 | 2008年12月 | 一年 | >= 5.2 | 2009年11月 | |
1.3 | 2009年11月 | 一年 | >= 5.2.4 | 2010年11月 | |
1.4 | 2009年11月 | 三年 | >= 5.2.4 | 2012年11月 | |
2.0 | 2011年7月 | 26個月 | >= 5.3.2 | 2013年9月 | |
2.1 | 2012年9月 | 15個月 | >= 5.3.3 | 2013年11月 | |
2.2 | 2013年2月 | 14個月 | >= 5.3.3 | 2014年5月 | |
2.3 | 2013年5月 | 三年 | >= 5.3.3 | 2016年5月 | |
2.4 | 2013年11月 | 14個月 | >= 5.3.3 | 2015年1月 |