`

PHP:路在何方?

阅读更多
  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编写的脚本能被直接编译成Bytecode在Jvm上运行的话,PHP的前景会好很多。另一个方向是做Java和.net间的集成,在一些大型的应用中整合已有资源。PHP4中我们已经可以调用com组件和Java对象,相信在将来PHP5将对此提供更多的支持。

  

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

相关推荐

    HTML学习资料 50课

    =数字) inurl: (php?=数字) inurl:Article_Print.asp? site 指定网站 inurl:Article_Print.asp? NewsInfo.asp?id= ShowNew.asp?Id= ShowNews.asp?Id= Show.asp?Id= Google dorks sql injection: inurl:index.php?...

    PHP源码 爱站云 兄弟网站 源码 带 后台 分享

    PHP echo $conf['url']?> 后台添加站点标题:<?php echo $conf['name']?> 后台添加站点描述:<?php echo $conf['desc']?> 全站标题:<?php echo $conf['title']?> 全站标签:<?php echo $...

    Apache+php+mysql在windows下的安装与配置图解

    Apache+php+mysql在windows下的安装与配置图解(最新版) 一.先准备好软件: ???? 1.Apache官方下载地址: ...2.Php官方下载地址:http://windows.php.net/downloads/releases/ 3.Mysql官方下载地址:??????

    ECSHOP供货商2.0以及第三方登录插件

    (3)其他涉及修改的文件,请使用对比工具修改(以上文件在官网原文件测试通过)。 (4)注:用户供应商申请链接。suppliers.php?act=edit (5)注:后台,相应管理链接(已集成好): 第三方登录:admin/website...

    机智CMS(witcms) v0.015 正式版.zip

    可以在任何页面调用.(频道id,文章ID,显示内容字数); 方法: <?php s04(); ?> //文章内容.建立一个article.php文件,加入这段即是3级页了; 后台地址: admin/ 用户密码: admin admin 作者信息: 机智网:...

    系统获取gonggu

    您可以在个人资料页互换或注册更多工人。inurl:trainers.php?id= inurl:buy.php?category= inurl:article.php?ID= inurl:play_old.php?id= inurl:declaration_more.php?decl_id= inurl:pageid= inurl:games.php?id= ...

    寻找sql注入的网站的方法(必看)

    (说明:后缀名为PHP的类似)  方法二:利用百度的高级搜索也可以,比如搜索url如.asp?id=9如下所示: (说明:后缀名为php的类似)  以上这篇寻找sql注入的网站的方法(必看)就是小编分享给大家的全部内容了,希望能...

    php获取服务器操作系统相关信息的方法

    本文实例讲述了php获取服务器操作系统相关信息的方法。分享给大家供大家参考,具体如下: 下面是PHP获取当前服务器信息的基本语句。 PHP程式版本: <?PHP echo PHP_VERSION; ?> ZEND版本: <?PHP echo ...

    PHP的HTTP客户端库PHPBuzz.zip

    Buzz 是一个轻量级 PHP 的 HTTP 客户端库。 示例代码: <?php $browser = new Buzz\Browser(); $response = $browser->get('http://www.google.com'); echo $browser->getLastRequest()."\n"; echo $...

    contao-greyify:使用 PHP 或 inserttag 为灰度图像提供小类的 contao 扩展

    使用 PHP 或 inserttag 为灰度图像提供小类的 contao 扩展 如何使用: 插入标签 Default : {{greyify::imagePath/ UUID ?width=x&height=x&mode=x}} // returns an image tag with figure container SRC : {{...

    PHP语言教程及案例.docx

    在PHP中,Hello World程序可以通过在文件中嵌入简单的PHP代码实现: ```php <?php echo "Hello, World!"; ?> ``` 在上述例子中: - `<?php` 和 `?>` 用于标识PHP代码块的开始和结束。 - `echo` 用于输出文本。 ##...

    PHP数据统计包Fermat.zip

    Fermat 是一个 PHP 开发包,可以对任意规模的数据进行数学和统计。示例代码1:<?php use Samsara\Fermat\Numbers; $five = Numbers::make(Numbers::IMMUTABLE, 5); $ten = Numbers::make(Numbers::...

    PHP获取php,mysql,apche的版本信息示例代码

    直接获取PHP的版本 复制代码 代码如下: <?php echo “PHP软件版本:”.phpversion(); ?> 直接获取MYSQL版本 复制代码 代码如下: <?php mysql_connect(‘127.0.0.1′,’root’,”); echo mysql_get_server_...

    akademie-graph:谁知道谁?

    quickstart-web-template 快速而肮脏地启动Web项目的模板(PHP,MySQL,Twig模板) KIT学生 ...在此目录中运行composer install 创建cache目录 创建config.php并以config.template.php为模板进行调整

    php 接口与前端数据交互实现示例代码

    最近在做前后端数据交互的尝试,也跳了很多坑,使用的是php+bootstrap-table+js,把一些收获记录在这里,方便...php: <?php //测试php是否可以拿到数据库中的数据 /*echo "44444";*/ //做个路由 action为url中

    captcha.class.php:一个简单的 PHP CAPTCHA 类

    ###参数s: user defined captcha text c: captcha type 可以在课堂上更改更多设置... ###如何使用它只需调用 captcha.php 文件并传递所需的类型和/或预定义的验证码文本。 captcha.php?s=123456 输出: ...

    机智内容管理系统2.0

    说明:网站URL,可以在conn.php配置 如: http://127.0.0.1 片段:{web_url} 说明:网站目录,可以在conn.php配置, 如: /witcms 片段:{ptah} 说明: 图片路径, 无图时: /images/noimg.jpg 有图时: /uploadfile/27e...

    php中3种方法删除字符串中间的空格

    phpecho preg_replace(‘# #’, ”, ‘ab ab’);//输出 “abab”?>第二种:使用str_replace()函数复制代码 代码如下:<?phpecho str_replace(‘ ‘, ”, ‘ab ab’);//输出 “abab’?>第三种:使用strtr()...

    PHP注释实例技巧

    php $a = 1; $b = 2; if (1==1) { $andy = ‘帅哥’; } ?> 一般注释的时候,用 复制代码 代码如下:<?php /* $a = 1; $b = 2; */ if (1==1) { $andy = ‘帅哥’; } ?> 调程序的时候,老要把后面的*/拿到前面去...

    toBase64:图片(pngjpe?g)转换成base64格式,并通过tinypng接口压缩

    Usage首先,下载代码:git clone git@github.com:mailzwj/toBase64.git tinyimg然后,前往申请开发者账号(可申请免费账号,支持500张/月),并在项目根目录下创建tmp文件夹接着,简单修改upload.php文件代码:...

Global site tag (gtag.js) - Google Analytics