複製鏈接
請複製以下鏈接發送給好友

symfony

鎖定
Symfony是一組可複用的 PHP組件,它還是一個用於web項目的 PHP框架
中文名
Symfony
外文名
Symfony
公司機構
SensioLabs Network
創立者
Fabien Potencier

symfony簡介信息

簡單的模板功能symfony是一個開源的PHP Web框架。基於最佳Web開發實踐,已經有多個網站完全採用此框架開發,symfony的目的是加速Web應用的創建與維護。 [1] 
同時,它還包含了很多工具和類用以縮短開發複雜的網絡應用的時間。

symfony特點

它的特點如下:
簡單的模板功能
緩存管理
自定義URLs
搭建了一些基礎模塊
多語言與I18N支持
採用對象模型與MVC分離
Ajax支持
適用於企業應用開發。

symfony框架

symfony新機制

一個框架結構在編程語言之上加入了新的機制,並且這些機制能夠為許多特定的目標自動提供一些開發模式。一個框架結構同樣為編碼增加了結構,並且促使程序員編出更好、更易讀的、有持續性的代碼。一個框架結構能讓編程變得更加簡單,因為它把複雜的程序封裝成了簡明的陳述。
一個框架的發展通常是以它所使用的語言所延伸出來的。一個php5框架是由一系列的用php5寫成的文件組成的。

symfony層次

一個框架將為應用劃分出層次。從整體上來説,它可以將應用分為三個層次:
◆ 表現邏輯層(presentation logic) 用於處理用户與軟件之間的交互
◆ 數據源邏輯層(data source logic) 提供了一個數據庫同其他數據提供者的聯繫通道。
◆ 範圍邏輯層(domain logic),或者叫事務邏輯層(business logic),這是剩餘的部分。它包括關於輸入的計算、處理表現層中的數據,以及根據從表現層收到的指令分派調度數據源邏輯層。

symfony網絡應用框架

網絡應用框架致力於促進網絡應用的開發(websites,intranets,等等)。建立一個基本的動態網站可以從現有的編程語言中輕易的實現,而PHP的知名就是由於它的簡易性被廣泛的應用。只需要php,你就可以查詢數據庫、管理會話(session,cookies)、訪問服務器端文件等等。而當你需要構建一個更加複雜的站點,當事務邏輯大大的增加了用於維護的編碼量的時候,你就需要一個網絡應用的框架出現了。

symfony優點

無論你是一個php5的專家還是一個在網絡應用編程方面的新手都沒有問題,影響你決定的最主要因素是你項目的大小。
如果你只是想要開發一個簡易的5-10頁的站點,只需要有限的訪問數據庫和幾乎不考慮性能、可用性或文檔,那麼你只需要單獨使用PHP。你將不會從網絡應用的框架結構的特徵中獲的太多的益處,使用面向對象或MVC模式只會使你的開發變慢。Symfony運行在一個只有CGI支持的共享主機上將不會高效優異的運行。
另一方面,如果你開發大型的web應用,其中有大量的事務邏輯,那麼單獨使用PHP是不夠的。如果你計劃將來維護和擴展你的應用,你需要編寫輕量級、易讀的和高性能的的代碼。如果你想直接使用最友好的用户交互界面(AJAX),你不能只寫上數百行的Javascrīpt代碼。如果你想享受並且快速的開發,那麼單獨使用PHP將是令人失望的。介於上述這些原因,symfony非常適合你。
當然,如果你是一個專業的web開發人員,你已經知道了web應用框架的所有優點,並且你需要一個成熟的,具有詳細文檔和一個大的團體支持。那麼不要再猶豫,symfony就是你的解決方案。

symfony特性

Symfony是一個完整的框架結構,設計用來幫助並加速網絡應用的開發。

symfony包涵觀念

它是基於以下的一些觀念的:
*儘可能的兼容更多的開發環境
*易於安裝和配置
*簡單易學
*企業級應用
*規定而非配置,支持回調
*在大多數情況下簡潔明瞭,但是有足夠的彈性為複雜情況做準備
*包含大多數網站的共性
*適應大多數 web “最佳實踐(best practices)” 和 web “設計模式(design patterns)”
*非常易讀的代碼、輕鬆維護
*開源
這些主要的基本概念突出了symfony的框架是使更多的公共任務自動完成,以使開發人員能夠完全專注於一項應用任務的特殊細節所在。而在每次一個新的web應用建立的時候不需要重新反覆勞動。

symfony兼容的數據庫

為了實現這些需求,symfony完全由PHP5寫成。它已經徹底的在各種現實項目應用中被測試過,並且實際上已經應用於一些高要求的電子商務網站。它可以同大多數現有的數據庫兼容,具體如下:
*MySQL
*PostgreSQL
*Oracle
*MSSQL
*和其他數據庫(如果安裝了Creole驅動)

symfony結構

symfony的對象模型依賴於以下三個獨立的層:
*數據庫抽象層(a database abstraction)
*對象關係映射層(an object-relational mapping)
*用於負責前台顯示和後台事務的 模型-視圖-控制器 模式層(a Model-View-Controller model for the front and back-office)

symfony開發環境捆綁

另外為了滿足企業已有的編碼規範和項目管理規則,symfony可以全部重新用YAML配置文件。它是默認提供的幾個開發環境,和捆綁:
*原型(prototyping)
*內容管理(content management)
*live configuration changes
*部署(deployment)
*單元測試(unit testing)
*應用測試(applicative testing)
*日誌記錄(logging)
*調試(debugging)

symfony應用開源項目

Symfony用到了其他一些開源項目的代碼:
*Creole, 用於數據庫抽象層(for the database abstraction layer)
*Propel, 用於對象關係映射層(for the object-relational mapping layer)
*Mojavi, 用於MVC模型層(for the Model-View-Controller model layer)

symfony公共特性

web項目的公共特性可以輕易的由symfony自動得到:
*國際化(internationalization)
*模板和助手(templating with helpers)
*表單確認(form validation)
*緩存管理(cache management)
*購物車管理(shopping cart management)
*簡潔的路徑(smart URLs)
*scaffolding
*發送郵件(email sending)
*分頁(Pagination)
*AJAX交互(AJAX interactions)

symfony贊助

Sensio是Symfony的贊助商,它是一家法國Web代理商。起先Symfony使用Sensio Framework作為該項目的名字,因此代碼中所有的類名前都加上了"sf"前綴,當它決定以開源形式發佈時,便以Symfony作為名稱(Symfony的英文縮寫也是sf)。

symfony應用

一款開源的Q&A服務Askeet就是使用Symfony開發的。許多其他應用我去二無羣多羣無,包括擁有2000萬用户的Yahoo Bookmarks,也是使用Symfony開發的。

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月
參考資料