成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

新里程碑到來 開啟PHP框架的新時代

原創
開發 后端 前端
然而就在最近,我注意到一個新的里程碑到來了——PHP框架的新時代。5月21日我在荷蘭PHP大會上講話時談到這個問題,引發的熱烈討論也讓我感到非常有趣。本文中我想要說說我所認為的PHP目前處在什么狀態,哪些地方有問題,還有眾多新出現的框架會怎樣改變它。

【51CTO 精選譯文】我曾在不同的系統和項目中埋頭度過了很多年,大部分時間都花在了PHP上。然而就在最近,我注意到一個新的里程碑到來了——PHP框架的新時代。5月21日我在荷蘭PHP大會上講話時談到這個問題,引發的熱烈討論也讓我感到非常有趣。在最近的日子里好像一切都在變化。本文中我想要說說我所認為的PHP目前處在什么狀態,哪些地方有問題,還有眾多新出現的框架會怎樣改變它。

框架的誕生

[[30070]]

圖一 我使用PHP框架

6年前出現的CakePHP大概是***個PHP框架,在它以后,我們見到了大量的PHP框架。目前的數量……可能大約有一百萬了,這些框架使用著不同的MVC、DBAL和模板實現,我喜歡它們,即使它們各有各的古怪,而且都仍然沒有得到大規模的采用。

如果你想要上網找找那些以框架為基礎開發的PHP開源項目,能夠找到的只有數量很少的一些,這很令人惋惜。部分原因是這些開源項目有很多在發布時甚至還沒有任何PHP框架存在,另有部分原因是想用PHP框架來開發確實需要學習相當一段時間。也就是說如果一個PHP項目如果想用框架開發就會增加不少學習難度,至少在大多數情況下。

不過框架們的出現已經確實開始改變了我們開發PHP的方式。許多開發者喜歡在口頭上聲稱他們懂得面向對象,但是當框架出來后,他們要被迫證明他們真正懂得OOP和它的工作方式。如今你要是再讓人用mysql_query可能臉上會挨上一兩拳,因為他們現在還需要用到mysql_real_escape_string。

框架是怎么做的呢?

沒有人真正知道PHP框架應該是什么樣子的,它們應該有什么功能。因此,人們是怎么把它們開發出來的呢?好的,他們要么是跟著其他語言(比如RoR)的現有框架照貓畫虎,要么是自己拍腦門。因為不存在什么經驗可言,現如今大多數的框架都是傳統設計的,每個人都知道有問題,但卻沒法解決。

PHP開發者一貫的務實做法在這里給了很大的幫助——就像PHP作為一種語言在不停進化一樣,PHP框架也在不斷的根據反饋而改變和成長。有幾年里多數人都對已經擁有的功能感到滿足了,但是如果你現在再回頭看看2007年的Zend Framework 1.0,和1.11相對比功能已經天差地別。因此,即使在今天,框架也正在迅速的發展來滿足功能的需要。

PHP 4曾經得到所有PHP框架的支持(令人驚訝的是現在一些框架仍然支持)。這導致了大量的過時代碼,特別是OOP模式。試圖支持舊版本的PHP讓新功能執行起來過于復雜,修正錯誤也愈發艱難。而且,越來越少的開發者想要面對著這些舊代碼工作。

什么出問題了?

[[30071]]

圖二:每用一次PHP魔術函數,都有一只貓要死于非命! “魔法殺戮”

首先,回到PHP魔術函數(__get、__call等等這些)盛行的年代。初看上去它們沒有什么錯,但它們實際上是非常危險的。它們讓API變得模糊不清,不能自動處理,最重要的是它們很慢。對魔術函數來說,它們的用例就是讓PHP被破解而做不想做的事情,它們有用處,但是會發生錯誤的事情。

SCOP——Static class oriented programming,面向靜態類編程,這是我發明的術語,用來描述大部分PHP代碼。靜態方法從很多方面來說都有問題,但更重要的是,如果一個類只作為靜態方法的集合,那么它就離OOP越來越遠了,它只是使用類來作為存放各種函數的容器,但是甚至有完整的框架就在做這個。

Zend Framework在很長一段時間是我最喜歡的PHP框架(現在對于PHP 5.2仍然適用),但我和它之間的主要問題是它總是過于賣力的想成為一個組件庫。而且其他框架和它走著相同的路——它們各寫各的類庫,但卻不使用現有的庫。這就搞得PHP有那么多獨立的庫,你想要使用就需要下載整個框架,臃腫的框架真令人頭疼。

#p#

2011年的新時代

為了改善這種情況,人們終于選擇要做一些事情。主要是在PHP 5.3的基礎上從頭開始重寫框架。建立新的標準,統一所有框架之間的接口,扔掉所有的遺留問題。這些聽起來容易,但只有通過這些事情,我們才能進入框架的新時代。

在CakePHP誕生之前我沒有用過任何PHP框架,所以我打算把它算作一個里程碑(其實我有些懷疑CakePHP就是***個PHP框架,當然你不會把Drupal當做框架的)。從CakePHP開始,至今六年過去了,這六年我稱為***個時代。2011年標志著第二個時代,全新的變革終將發生,我們會迎來各種各樣的版本發布和公告。

有趣的是,2011年的PHP好像不再是PHP了,或者可以說不再只是PHP了。有了Nginx和CouchDB這樣的新工具,惱人的LAMP stack用的越來越少了。如今集成功能和互操作性成為了關鍵因素。同樣,PHP 5.3更像是一個全新出籠的野獸,它能夠給你強大功能,但是并沒有真正的支持向后兼容。

我們來解決它,好嗎?

[[30072]]

圖三:來用GIT吧。

Git支持許多PHP框架,給我印象最深的是Symfony,因為它們已經成功的吸引到大量的貢獻者,而對比前幾年,PHP框架最近步伐又快了很多。

PHP框架們在不停的完善著各種小修改。首先,所有的魔術函數現在已經不見了,顯式定義隨處可見。此外,人們更多的考慮使用小尺寸的核心,通過擴展和類庫來附加功能,這是一個了不起的辦法,更易于使用框架,減少內存占用。

性能是PHP框架面對的主要問題,大部分框架在新版本中都做了提升性能的安排。比如Symfony,在前端做了改進用來幫助管理資產(JavaScript和CSS),在PHP端由于清除了魔術函數和清理陳舊代碼,通過PHP 5.3得到了巨大的性能提高。

新功能

顯然,所有新的語言功能都包含在其中了,例如大多數的框架已經開始支持命名空間,還有更早出現的PSR-0現在很好的集成到框架中,匿名函數也以各種各樣的方式在框架中找到了它們的位置。

依賴注射容器(Dependency injection container)和Annotation接口是我想提及的兩個,它們能夠改變你的編程方式。在Symfony中我很喜歡使用它們,現在其他的框架也正在迎頭趕上,開始把它們集成進去。這些結合上新的PHP功能,就可以創建出非常干凈的微型框架應用。

我并不喜歡直接把Java的功能列表移植到PHP來,Java的工作方式不同(而且需要1GB內存)。我們看到它正一步步走來,但我有點擔心,因為我知道PHP喜歡輕一點的系統,而不是復雜的對象。這些功能聽起來很炫,但實際上它們帶來的問題比解決的要多。

因此,什么時候?

[[30073]]

圖四:Symfony2發布

Zend Framework 2.0正在路上,但還需要一段時間。由于ZF有一個龐大的代碼庫,他們首先要做是把它轉換成命名空間代碼。完成之后,還要開始重新構建原有功能和新功能。ZF目前正在做MVC方面的工作,我希望今年年底最終版能夠發布。

Lithium會來的快些,它還在dev模式,但似乎已經很接近完成了。Lithium是一個和常規完全不同的框架,所以很值得看看。最觸動我的是它的AOP實現,顯然它只支持PHP 5.3,但它對CouchDB和MongoDB支持的相當不錯。

在我看來Symfony2依然在領先群雄。目前它正在Beta2版,但最終版也只是幾個月的事兒了。Symfony2功能列表很難總結,所以值得去它的網站查看一下,我想特別說一個——捆綁(Bundle)功能。捆綁是一種方法,可以通過外部的組件集合來擴展應用結構,想想插件吧。

結論

我對當前PHP行業發生的事情感到極度興奮,我相信這些一定會帶來重大的成就。我們終于可以扔掉所有(或者大多數)的遺留問題,開始實施新的想法。從現在開始的五年之內,我們都會像今天一樣興奮。

原文地址:http://blog.webspecies.co.uk/2011-05-23/the-new-era-of-php-frameworks.html

【編輯推薦】

  1. 見微知著 大型網站PHP開發之道
  2. 草根語言PHP的進化史
  3. 中國應用開源腳本語言PHP的水平如何?
  4. 優秀的PHP開發者是怎樣煉成的?
  5. 25個不錯PHP的游戲編程腳本代碼分享
責任編輯:陳貽新 來源: 51CTO
相關推薦

2011-09-10 19:23:22

2011-09-09 13:42:16

2024-12-04 10:39:00

Linux內核技術性

2016-09-29 09:46:41

JavascriptWeb前端

2012-09-21 17:24:04

開源云平臺開源云計算標準OpenStack

2013-11-13 15:42:54

AndroidWPBlackBerry

2017-08-01 10:15:56

數據分析大數據

2015-12-21 16:12:06

紅帽CloudForms混合云

2010-04-09 15:24:55

2013-01-18 10:09:10

互聯網網絡發展撥號上網

2021-02-04 14:31:30

RISC-V架構GPU

2019-03-08 09:54:29

華為

2013-10-21 10:38:19

Ubuntu 13.1Canonical

2017-05-10 09:57:11

小米手機智能

2015-07-28 11:29:59

電商亞馬遜沃爾瑪

2023-06-23 14:15:09

Rust編程

2023-05-18 14:03:00

Transforme模型

2013-01-22 15:59:14

里程碑浪潮天梭K1

2012-04-17 16:02:41

Marvell西部數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美一区二区三区1000 | 久久精品成人 | 艹逼网 | 特级黄一级播放 | 欧美性网 | 色888www视频在线观看 | 亚洲精品中文字幕在线观看 | 国产精品污www一区二区三区 | 久久久久久久久99 | 精品国产一区二区三区性色av | 国产黄色小视频 | 午夜影院普通用户体验区 | 另类视频在线 | 日韩色图在线观看 | 性一交一乱一透一a级 | 综合久久综合久久 | 国产精品完整版 | 国产91丝袜在线播放 | 国产欧美三区 | 9999久久| 亚洲精品一区二区三区四区高清 | 欧美精品久久久久 | 中文在线а√在线8 | 一区二区国产在线 | 涩涩视频在线看 | 99久久精品免费 | 日韩激情在线 | 亚洲97| 日韩在线播放视频 | 视频一区在线观看 | 国产黄色麻豆视频 | 亚洲精品一区二区三区蜜桃久 | 国产精品综合色区在线观看 | 国产精品视频500部 a久久 | 久久久亚洲综合 | 日日操夜夜操天天操 | 国产无套一区二区三区久久 | 国产1区 | 欧美日韩亚洲视频 | 日韩欧美在线一区二区 | 国产精品一区二区不卡 |