PHP架構,傷不訖啊傷不起

來源:互聯網
上載者:User
PHP架構,傷不起啊,傷不起

自從Rails颳起了一陣架構風,其它語言群起響應,Java,Python,Scala,PHP,無論靜態動態語言都出現了模仿Rails模式的架構出現,其中,PHP語言的架構生產力更是一流,主流的PHP架構就有超過5種,加上不出名的架構的話,我估計起碼有20多種架構,可怕的數量!!

PHP架構之路一直充滿著爭議,從PHP要不要用架構,到應不應該模仿Rails,卻抵不上PHP架構的井噴式的增長,各類架構你方唱罷我登場,網上僅僅是羅列部分架構和簡介就能成為一片文章,名為《國外十大最流行PHP架構排名》。PHP架構中比較知名的有:CodeIgniter、CakePHP等中小型架構和Zend、Symfony等大型架構。我一直在想為什麼PHP的架構數量如此之多呢?
1. PHP開發架構太‘容易’了
不要罵我,說實話,PHP開發Web架構的門檻比起其他的語言,真的要低太多了,PHP本身已經有了對Web的支援,要做一個架構,只要先寫一個單入口index.php,然後通過module和action參數執行對應的Controller類,和View代碼,一個非常簡單的架構就好了,熟練的程式員一兩天就完成了。如果覺得太簡單,再稍微封裝一下,把$_REQUEST,$_SESSION封裝一下,封裝一下資料庫操作等等。到這裡一個有模有樣的PHP‘MVC架構’就基本出爐了。熟練一點程式員一周時間搞定了。
相反其他語言,以ruby為例,光是對REQUEST的處理,參數解析等基礎功能實現,就遠遠不止一周的工作量,在加上ruby語言的高靈活性和複雜的文法,使他開發一款拿的出手的架構所需要的精力是大大的超越一般,開發架構的門檻低是PHP架構泛濫的因素之一。

?

2. PHP的封裝能力弱,致使架構的靈活度不夠
這也是事實,PHP的架構很多,但是一般要評估項目,來選擇適當的架構,如果是一個簡單的web項目,一般選擇CodeIgniter、CakePHP這類架構,如果是大型的應用,也會選擇Zend、Symfony等大型架構,因為你會發現使用Zend和CodeIgniter完全是兩回事。
也許我說的抽象了,那我舉個例子:在預設的PHP環境中,是沒有AOP功能的,不能對類的已有方法進行功能性增強,在需要實作類別似功能的情況下,你就需要顯示的修改外面的代碼,非常流行的做法是利用PHP的魔法函數,但是依然需要修改對象的建立方法。
依然對比Ruby,它幾乎是內建了AOP支援,可以在完全外部調用完全不變的情況下完成功能的增強。
在架構的封裝中這種能力的差異就更加的顯著,在PHP中架構複雜度高也提高了使用者的難度,而不能像Ruby等完全將複雜性隱藏在架構的內部。(說句題外話:javascript也是如此,jquery便是佐證)。

?

3. PHP的實現機制,使得架構的效能成為詬病
PHP的運行模式,每次request結束都會完全釋放所有資源,導致架構的載入成為了一個不可忽視的效能累贅,即使你不介意上面提到大型架構的使用複雜度高,這個原因也讓你不會在中小型項目中輕易使用Zend等大型架構。同時也限制了架構的能力。

據我分析,正是這三個原因,使得PHP的架構如此之多,但是沒有一個成為真正的主流。這種情況未必是好事,在Ruby中,Rails一統,使得Rails社區空前繁榮,很多Ruby高手開發各種外掛程式增強它的功能。使得它有著十分良性的發展。在js架構中jquery也有著相同的經曆。
在PHP中,高手則是不停的貢獻它們的新架構,老實說我個人覺得協助很有限,更是攪渾了這一缸水,其實很多架構完全可以合并為一個發展,與其出現100個60分的架構,不如出現一個100分的好架構。PHP架構,多的讓我傷不起啊傷不起。?

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.