symfony

symfony

面向對象的PHP5框架
Symfony是一個基于MVC模式的面向對象的PHP5框架。Symfony允許在一個web應用中分離事務控制,服務邏輯和表示層。[1]簡單的模闆功能symfony是一個開源的PHP We​b框架。
    中文名:Symfony 外文名: 别名: 公司機構:SensioLabs Network 創立者:Fabien Potencier 類别:PHP5框架

簡介

簡單的模闆功能symfony是一個開源的PHP We​b框架。基于最佳Web開發實踐,已經有多個網站完全采用此框架開發,symfony的目的是加速Web應用的創建與維護。

同時,它還包含了很多工具和類用以縮短開發複雜的網絡應用的時間。

特點

它的特點如下:

1.簡單的模闆功能。

2.緩存管理。

3.自定義URLs。

4.搭建了一些基礎模塊。

5.多語言與I18N支持。

6.采用對象模型與MVC分離。

7.Ajax支持。

8.适用于企業應用開發。

框架

新機制

一個框架結構在編程語言之上加入了新的機制,并且這些機制能夠為許多特定的目标自動提供一些開發模式。一個框架結構同樣為編碼增加了結構,并且促使程序員編出更好、更易讀的、有持續性的代碼。一個框架結構能讓編程變得更加簡單,因為它把複雜的程序封裝成了簡明的陳述。

一個框架的發展通常是以它所使用的語言所延伸出來的。一個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)。

相關詞條

相關搜索

其它詞條