PHP:风雨欲来 路在何方?


Posted in PHP onOctober 09, 2006

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将来发展的一点个人看法,可能不是很成熟,只是给大家一点参考。

 

PHP 相关文章推荐
PHP 压缩文件夹的类代码
Nov 05 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php实现cookie加密的方法
Mar 10 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
php DES加密算法实例分析
Sep 18 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 PHP
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 #PHP
用PHP实现登陆验证码(类似条行码状)
Oct 09 #PHP
用PHP创建PDF中文文档
Oct 09 #PHP
PHP与javascript对多项选择的处理
Oct 09 #PHP
3
Oct 09 #PHP
example2.php
Oct 09 #PHP
对盗链说再见...
Oct 09 #PHP
You might like
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
JsDom 编程小结
2011/08/09 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
遗传算法python版
2018/03/19 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
Python 里最强的地图绘制神器
2021/03/01 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
个人简历的自荐信
2013/10/23 职场文书
学期评语大全
2014/04/30 职场文书
硕士生找工作求职信
2014/07/05 职场文书
体育活动总结
2015/02/04 职场文书
优秀创业计划书分享
2019/07/19 职场文书