1. 快速不貪多
在IT世界,人們苦于程序性能的時(shí)候并不少見(jiàn)……當(dāng)項(xiàng)目完成之后就更是如此! 也就是,在所有東西被設(shè)計(jì)成追求功能性和技術(shù)性之時(shí)。就算你已經(jīng)分離出一切,性能優(yōu)化仍非易事。
另外一面,Symfony2在構(gòu)想階段即以速度為先,特別強(qiáng)調(diào)性能。 比較來(lái)說(shuō),Symfony2差不多比Symfony1.4以及Zend Framework 1.10快3倍,卻少使用了2倍的內(nèi)存。
2. 無(wú)限靈活性
不管你的需求是什么,Symfony一定適合。 它的dependency injector和Event Dispatcher令框架“全部可配”, 程序的每一塊磚都是完全獨(dú)立的。一個(gè)“三合一”框架歸為以下幾點(diǎn):
全功能(完整版):你愿意開(kāi)發(fā)復(fù)雜程序,你需要大量功能。
磚碼磚(brick by brick):根據(jù)你需要的功能,創(chuàng)建屬于自己的框架。
微框架:作為獨(dú)立物,Symfony2能夠?yàn)槟愕哪硞€(gè)項(xiàng)目開(kāi)發(fā)出一個(gè)特定功能。 不必重復(fù)開(kāi)發(fā)每樣?xùn)|西,不必安裝整個(gè)框架,只需取出你所需要的那塊磚。
3. 可擴(kuò)展
從最小的磚塊,到完整的核心,每樣?xùn)|西都是以“bundle”(或者用Symfony的話(huà)說(shuō):plug-in)方式來(lái)呈現(xiàn)在Symfony2中。 每個(gè)bundle意在為框架增加功能性,當(dāng)然,每個(gè)bundle也可以復(fù)用在其他項(xiàng)目中,或者被整個(gè)社區(qū)所共享。
從任何角度講,bundle系統(tǒng)都可以改變Symfony中的每一樣?xùn)|西,包括框架核心自身。 以系統(tǒng)級(jí)接口作為磚塊之間的契約,框架的行為即可按照意志來(lái)改變,毋須全面地重新配置。
4. 穩(wěn)定且可持續(xù)
SensioLabs主導(dǎo)開(kāi)發(fā)的Symfony,主要版本統(tǒng)統(tǒng)被公司支持長(zhǎng)達(dá)三年。而對(duì)于安全相關(guān)的問(wèn)題甚至可以說(shuō)是終身受到維護(hù)。
對(duì)于更加堅(jiān)固的穩(wěn)定性,Symfony合約和接口的微版本號(hào)(minor versions)都是得到保證的, 全部微版本之間的兼容性是在公共接口所定義的API中加以確保的。
5. 開(kāi)發(fā)之樂(lè)
作為一個(gè)全功能的環(huán)境,Symfony2向開(kāi)發(fā)者保證了一定級(jí)別的開(kāi)發(fā)舒適度。 大量苦差(如細(xì)碎功能)已經(jīng)交由框架處理,Symfony2令開(kāi)發(fā)者集中精力到程序的真正價(jià)值所在, 以及他們的全般角色校驗(yàn)和生產(chǎn)力提高上面。
在Symfony那些意在減輕開(kāi)發(fā)者負(fù)擔(dān)的工具中,既有傳奇般的Web Debug Toolbar(web除錯(cuò)工具條), 也有原生的對(duì)開(kāi)發(fā)evironments的支持,連同詳盡的報(bào)錯(cuò)信息頁(yè)面,乃至原生security信息等。
6. 易于使用
完全徹底的靈活,滿(mǎn)足了專(zhuān)業(yè)開(kāi)發(fā)者和高級(jí)用戶(hù)的需求,但Symfony2仍舊是完全可控的。 海量文檔、社區(qū)和專(zhuān)業(yè)支持, 連同框架內(nèi)置好了的“最佳實(shí)踐”——best practice早已與框架融為一體,又何須刻意關(guān)注和理解它們呢? ——即便是初學(xué)者也可以感受到Symfony之“易”。