在了解一個(gè)新的php框架,首先關(guān)心的是yaf的性能,其次才是安全等等要素,php各種各樣的框架,性能也不一樣.目前使用的yii和ci性能還不錯(cuò),了解yaf之后,發(fā)現(xiàn)他們性能差的十萬(wàn)八千里. 今天就來(lái)聊聊我yaf我認(rèn)為的優(yōu)點(diǎn)和缺點(diǎn)。

 

1.1. Yaf的特點(diǎn)

 

在和其他用PHP寫(xiě)的PHP框架來(lái)比的話, Yaf就是劍的第二層境界. 框架不在你手中, 而在PHP的”心”中.

目前PHP的框架層出不窮, 其中不乏很多優(yōu)秀的框架, 比如Zend官方支持的Zend Framework, Yii, ci等等. 但在這繁多的框架也就造成了公司內(nèi)多種框架的業(yè)務(wù)產(chǎn)品. 這些框架之間的不同, 也就導(dǎo)致了多種版本的類(lèi)庫(kù), 框架, 約定, 規(guī)范,,,,

那么, 為什么現(xiàn)在開(kāi)源社區(qū)沒(méi)有一個(gè)成熟的用PHP擴(kuò)展開(kāi)發(fā)的框架呢?

用PHP擴(kuò)展寫(xiě)PHP框架的難點(diǎn)

  1. 難于開(kāi)發(fā). 要完成一個(gè)PHP擴(kuò)展的PHP框架, 需要作者有C背景, 有PHP擴(kuò)展開(kāi)發(fā)背景, 更要有PHP框架的設(shè)計(jì)經(jīng)驗(yàn).
  2. 目標(biāo)用戶群小. 現(xiàn)在國(guó)內(nèi)很多中小型站都是使用虛擬主機(jī), 并不能隨意的給PHP添加擴(kuò)展, 所以這些大部分的中小型企業(yè), 個(gè)人博客的用戶就無(wú)法使用.
  3. 維護(hù)成本高. 要維護(hù)PHP擴(kuò)展, 不僅僅需要精通于C的開(kāi)發(fā)和調(diào)試, 更要精通于Zend API, 并且升級(jí)維護(hù)的周期也會(huì)很長(zhǎng).

那既然這樣, 為什么還要用PHP擴(kuò)展來(lái)開(kāi)發(fā)框架呢, 或者說(shuō), 這可行么?

用PHP擴(kuò)展寫(xiě)PHP框架的可行性

  1. 擴(kuò)展邏輯相對(duì)比較穩(wěn)定, 一般不易變化. 把它們抽象出來(lái), 用擴(kuò)展實(shí)現(xiàn), 不會(huì)帶來(lái)額外的維護(hù)負(fù)擔(dān).
  2. 框架邏輯復(fù)雜, 自檢耗時(shí)耗內(nèi)存都比較可觀, 而如果用擴(kuò)展來(lái)實(shí)現(xiàn), 就能大幅減少這部分對(duì)資源的消耗.

 

1.2. Yaf的優(yōu)點(diǎn)

 

  1. 用C語(yǔ)言開(kāi)發(fā)的PHP框架, 相比原生的PHP, 幾乎不會(huì)帶來(lái)額外的性能開(kāi)銷(xiāo).
  2. 所有的框架類(lèi), 不需要編譯, 在PHP啟動(dòng)的時(shí)候加載, 并常駐內(nèi)存.
  3. 更短的內(nèi)存周轉(zhuǎn)周期, 提高內(nèi)存利用率, 降低內(nèi)存占用率.
  4. 靈巧的自動(dòng)加載. 支持全局和局部?jī)煞N加載規(guī)則, 方便類(lèi)庫(kù)共享.
  5. 高性能的視圖引擎.
  6. 高度靈活可擴(kuò)展的框架, 支持自定義視圖引擎, 支持插件, 支持自定義路由等等.
  7. 內(nèi)建多種路由, 可以兼容目前常見(jiàn)的各種路由協(xié)議.
  8. 強(qiáng)大而又高度靈活的配置文件支持. 并支持緩存配置文件, 避免復(fù)雜的配置結(jié)構(gòu)帶來(lái)的性能損失.
  9. 在框架本身,對(duì)危險(xiǎn)的操作習(xí)慣做了禁止.
  10. 更快的執(zhí)行速度, 更少的內(nèi)存占用.

其實(shí), 來(lái)點(diǎn)簡(jiǎn)單的,我認(rèn)為yaf最大的有點(diǎn)是性能,這不是一般的快,性能比其他php框架快上十幾倍,和原生的php相差不是非常多。缺點(diǎn)也很明顯,畢竟是C的擴(kuò)展,如果程序有漏洞,作者未及時(shí)更新,使用者在不懂C的情況下,只能看著網(wǎng)站受辱或者祈禱,或者關(guān)閉網(wǎng)站.