首頁 後端開發 php教程 PHP:风雨欲来 路在何方?

PHP:风雨欲来 路在何方?

Jun 01, 2016 pm 02:28 PM

php4:奇迹背后

1995年时,Rasmus在用PHP写他的个人主页;今天,PHP成为风靡全球的脚本语言,越来越多的站点选择使用PHP,连Yahoo都放弃了自己的脚本而改用PHP支持它的网站。可以说,PHP是一个奇迹。我一直认为,任何奇迹背后都有它的原因。现在,就让我们透过这个奇迹,来看看PHP的成功之道。

1 简单易用

PHP的入门门槛很低,它对使用者的要求微乎其微。学过C语言的人,使用PHP几乎不需要什么时间。它们的语法是如此相似,以至于我常常想,是不是在C语言变量前加个$就能改成PHP。这使得大量C程序员在网络脚本中选择了PHP。另外,比起asp的组件系统和java庞大的类库来,PHP的函数库要好学多了。在编程风格上,PHP更是自由,你可以使用N种风格来写你的脚本程序。这些特性使得PHP成为初学者的首选语言。抢占初学者市场是很重要的策略。如同任何人都会对自己的初恋记忆犹新一样,人们往往会对最初学习的语言有很深的感情。即使后来自己成长了,改用其他语言了,还是会时时记起最初学习的语言。在这点上,PHP做得很出色。

2 剪裁得当

PHP开发组是最了解网络的一群人,他们非常清楚用户要的是什么。PHP就是要做一个出色的网络脚本语言,而且,它只是要做一个网络脚本语言。PHP提供的函数集在网络方面相当强大,而且重点均专注于网络应用。像PHP中的无组件文件上传,超多数据库支持等特性都表现出这个特点。顺便说一句,PHP甚至支持access数据库。专注使得PHP在网络上表现出极其优秀的性能。有失才能有得。

3 支持强大

PHP有强大的OpenSource团体支持,在网络上有数以万计的开源代码。你可以整合几个现有程式来实现你的应用,也可以分析大师级的代码来得到提高。PHP还有很多扩展性的项目来增强PHP在某个方面的功能。像注重编程规范化和代码重用的PEAR,提供可编译模板技术的Smarty,甚至开发桌面程序的GTK。

分析完这几个理由,我们可以看出,PHP的成功得益于PHP开发组的战略眼光。PHP提供了一个最小工作集,使用户能用最简单的方式高效地完成自己需要的应用。这正是初学者需要的。然后它通过方便的扩展来提供各个方面的解决方案,这样,你只需要学你要用到的那个领域的东西。当你涉及的领域越来越多时,你的水平也随之提高,当你熟悉了大多领域时,回头看看,会发现不知不觉已到山腰。PHP也提供了我们一种学习态度。

asp.net+J2EE:风雨欲来

网络脚本界的革新浪潮由Microsoft的ASP.net首先发起。在ASP.net中,有一个很吸引人的东西——事件驱动机制。这在桌面编程中是很普通的概念,而在脚本编程中事件驱动意味着对服务器端的脚本(如PHP、jsp、ASP)和客户端的脚本(如JavaScript和VbScript)进行封装,使之协同工作。这样一来,编程就会变得异常方便。在.net环境中的事件驱动还有一个优势,就是你甚至可以不会任何服务器端脚本和客户端脚本,因为在ASP.net中,是可以直接使用C#这样的语言的——连$都不用加。这为MS阵营的传统程序员转向网络开发铺平了道路,同时,也使PHP在初学者市场上受到很大的打击。可以预见,以后的传统程序员转向PHP的将大为减少。不过ASP.net最大的问题在于它只能在Windows上运行,而现在大陆正在大力发展linux。这使得PHP的生存空间似乎宽了点,但是——让我们来看看Java吧。

Java也是一个奇迹,1995年发布第一个版本,现在形成三个版本,分别覆盖嵌入式系统(J2me)桌面程序(J2se)和服务器(J2ee)三大应用领域。更重要的是,Java得到了绝大多数程序员的认可,现在世界上最出色的计算机书籍多是以C++或者Java作为描述语言的。Java几乎像C一样,成为一种信仰。所以,我们不要妄想Java阵营的程序员会转向PHP。同时,在同是开源和跨平台的Java面前,PHP丢掉了不少优势。J2ee中的JSP又在初学者市场对PHP造成相当的压力。

在曾经使PHP成功的初学者市场、易用性和开源支持等方面都受到挑战,而随着机器性能的不断提高,大家对效率的要求渐渐降低的情况下,可以说,PHP要在ASP.net和J2EE的狭缝中生存并壮大,是一件很不容易的事情。

而PHP本身还有不少问题。像低层用户过多。大量的开发者处于入门阶段,不知道如何提高自己,导致大量开源代码不规范和低效率,而又会又下一批初学者从这些糟糕的代码中学习,如此递归。另一方面,高阶用户却因为PHP的面向对象特性不完整等原因而不得不转向其他语言以开发大型应用。


PHP5:浓浓咖啡味

PHP开发组在今年年中发布了PHP5的BETA1,我们可以从中看见PHP的反击。首先,PHP4的开发仍然马不停蹄,而且我们可以肯定,PHP4的开发还将持续很长一段时间。这样做的目的是巩固既有用户,同时在将来的PHP4版本中逐渐融合部分PHP5的新特性,实现PHP4到PHP5的平滑过渡。

再来看PHP5的变化。在PHP5中,我们看到了太多Java的影子。OO体系几乎是COPY的Java的,这保证了PHP高阶用户不流失,使得他们能方便的使用最新的技术体系来架构自己的应用。另一方面,也为Java程序员使用PHP提供了方便,虽然这样的情况可能比较少。在完善了OO体系后,PHP具备了真正进入企业级市场的能力。然后PHP5也添加了不少自己的东西,像__get,来使这个体系更易用。不知道的是,这杯cappuccino是否会像Java般受欢迎呢?

从PHP5的改变中,我们看出了PHP将来的方向。一是和JSP竞争,争取在某一些方面取代JSP,成为粘合JavaBeans和Servlet的胶水。这要求PHP和Java之间建立更为紧密的关系。Zend小组正在参与JSR规范的指定。这个规范将使得你可以在PHP中直接new一个Java对象并调用它的方法。这样也能使PHP更快的进入企业级市场。另外,如果PHP编写的脚本能被直接编译成Binary Code在Jvm上运行的话,PHP的前景会好很多。另一个方向是做Java和.net间的集成,在一些大型的应用中整合已有资源。PHP4中我们已经可以调用com组件和Java对象,相信在将来PHP5将对此提供更多的支持。

不管怎么样,无论是和J2ee和.net竞争还是融合,PHP要走的,将是一条满是荆棘的路。不过既然PHP已经一路风雨地走到了今天,我们有什么理由不相信它能走得更远呢?

Best Wishes, PHP.

PS 这只是Easy对PHP将来发展的一点个人看法,可能不是很成熟,只是给大家一点参考。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試? 在PHPStorm中如何進行CLI模式的調試? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

See all articles