PHP的未来

 更新时间:2016年11月25日 16:10  点击:2125



一直以来,PHP的开源方式令开发人员有很多的选择。与Java不同,因为(PHP)有很少语言规范和系统标准要求,这让每个开发人员都能随心所欲的编程。过去18个月来,通过引进一系列的编程规范和标准,这个差距缩小了,随着Zend Framework之类的PHP框架发展,这种趋势还会继续下去。

过去人们认为PHP只能做一些基本的任务如客户本,简单网页等。但PHP现在正越来越多的被用在具有相当复杂程度的项目中。PHP的主要优势不在于靠自身去解决复杂的应用,而用于可灵活解决应用中连接的复杂性。因此即便是大型应用也可以用PHP来写,只要把它们分成各个组件即可。随着这种开发方式越来越多的在IT相关领域如Ajax 和SOA所采用,PHP将随之进入相关领域。其结果,PHP将随着IT领域将应用由大划小的趋势而扩大应用范围,并进而成为大型企业IT管理战略的技术选项。

随着PHP自身的优势和Zend 的技术效应,PHP应该顺理成章的受到IT工业的强烈支持。

Zend 与SUN 合作优化PHP/Java之间的相互操作性。通过与IBM和Oracle合作,Zend创造了Zend Core,给PHP以强大的支持,并设计了各种数据库接口。Intel 和SAP一至看好PHP市场,并对Zend技术投入风险资本。最后,Microsoft也看到了PHP的潜力,宣布技术合作以改善PHP在Windows 服务器平台上的操作性。

PHP将增加在企业环境的重要性,同时维持其简易性以保持在web应用中的领先地位。



BURLINGAME, Calif 消息: PHP脚本语言的简单性会令其在网络应用上比Java更易推广和普及,互联网溜览器的先驱Marc Andreessen在 Zend/PHP星期三的演讲中如此预言。

Andreessen (安德森)说:自从1995年,Sun Microsystems 开创并发布Java以来,Java获得了极大的成功,这主要是因为Java把它的语言优势更多的落实在程序员的应用方面,而不是放在机器上,这使得软件开发的难度明显降低。但是,Andreessen也提到,与从前相比,Java现在已经增加了很多并不令人喜欢的特性。

Java 在过去数年来一直比C和C++更易使用,直到最近变得复杂了。Andreessen提到,现在有人认为它甚至比C++还难学。(Java)简易性的年代已经过去了:“PHP现在正处在比Java更有利的环境态势中获得发展。”

这些看法或许不会被Java 的拥护者所认同 -- 他们中的大多数来自于由数百万 程序员和数百家公司组成的,掌控软件前途的Java 社团。

但即使在IBM,那些曾着力把Java 带进服务器以及以Java 为核心的WebSphere 服务器软件的高层人员,现在也看到了PHP的优势超越了Java 。

“简易性是它最大的特点。”  IBM正处发展中的IT集团的副总裁Rod Smith提到,PHP在一个报告会上引起了IBM的关注。 ”他们并不着力于增加语言特征去和其它的语言竞争,“ 而代之以 ”简单的方式,而不是很不幸的,我们在Java身上曾做过的方式。“

PHP是一个开源软件,它包括一个引擎用于简化调用PHP脚本的程序,和一个大的预建脚本库。(PHP)众多的发展都由Zend公司掌控,后者还出售PHP产品包,编程工具和服务。

狂热的程序员在电脑界并不新鲜,他们坚持要建立自己的产品作为基准平台。事实上,Microsoft有很多广受欢迎的,开发者易用的编程工具,它们的成功主要归功于Windows平台。

PHP已被广泛使用,目前已有大约2千2百万网页使用PHP,数量还在稳步增长。大约450个程序员有权威去审核软件的改进。主要使用PHP的企业包括Yahoo, Lufthansa 和 Deutsche Telekom''s T-Online.

PHP比Java的应用范围窄多了,(Java)不仅可用于Web服务器,而且还可以用于PC,手机,带芯片的支付卡等很多设施。Java其中的一些技术,如JSP,倒是像PHP一样处理同样的事情。

”Java 和 PHP是在同一竞争水平,(Java)现在领先 “ Eclipse 的总经理MikeMilinkovich在一个报告会上说。Eclipse是一个开源编程工具,长期支持Java,现在同时支持PHP。” 我期盼PHP在市场上能紧追猛赶(Java)。“

Java 和PHP之间也在相互靠拢。Oracle,作为一家同时售卖Java服务器软件和其自身数据库软件可同样用于Java或PHP的公司,也是那些在服务于 Java之余还致力于协助PHP的企业中的一员。Oracle产品战略副总裁KenJacobs在一个会议上讲,Java的223特性要求 “ 将帮助在Java社区和PHP社区之间搭建桥梁。”

即便是Andreessen,他刚协助发起一个叫Ning 的应用,用于在线交换图片,信息和其他内容,也知道Java的地位。

"我的新公司正设法把Java 和PHP整合起来。这需要巨大的投入。" 他谈到他们的技术决策。“我们系统的核心是Java做的。就像一个操作系统,像一个系统编程项目。在它上面有一个应用层 -- 实际上你看到的一切都是用PHP做的。”

PHP,就像Linux和Apache的开源项目一样,现在已经受到了电脑产业巨头的亲睐。 IBM和Oracle 正致力于让PHP应用从它们的数据库提取信息,他们的背书是非常重要的,zend CEO Doron Gerstel说。

"IBM和Oracle 支持它的事实--给了IT用户一个(巨大的)信心保证。巨头都支持它,那它一定是好东西 " Gerstel在一个报告会上说。

PHP在预期11月初推出(译者注:此文写于05年)的新版5.1里,将包括一个更快的引擎来处理PHP脚本,PHP的创造者和Zend 的共同奠基人Zeev Suraski说。还将包括一个底层的“数据抽象层”以便利于PHP和不同的数据库连接,一个高水平层用于与XML数据交换,后者产生和服务于Web 服务件(Web services)。

版本6,预期在2006年推出,将支持Unicode字符解码,(Unicode)支持广泛的字母,使系统的多国应用能更简易地实现


1、布尔值:false(0,空白,null);    true(-1,非0值);

2、echo ''$s''输出内容是 $s; 
    如果""里面包含了$s或者{$s},那么将显示的变量的值。推荐使用{$s}的方式。
    使用""时候,如果在""里面还要使用"",就必须用来转义,例如: echo "<font>"sss"</font>";

3、字符串连接:使用标点"."进行字符串连接。

4、访问字符串中的字符:通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问。
   strlen($str)   函数可以获取字符串长度。
   $str[0]  获取字符串$str的第一个字符。
   substr(''123456'',5,1)   从第5个字符开始获取一个字符,结果是“6”.
 
5、strval($s)将$s的值转换成字符串,intval($s)将$s的值转换成int整型数值。
   双引号里面使用双引号:" a"b "=a"b ;

6、数组: (array 括号,逗号,=>)
   数组排序:sort($arr);
   定义:$arr=array(1=>''11'',''foo''=>''fffooo'', ''info''=>array(2=>22,''ghost''=>''host'')  );
   引用:$arr[1]  $arr[''foo'']  $arr[''info''][2]  $arr[''info''][''ghost'']
   count($arr)  获取数组元素数量
   遍历数组:$arr=array(1=>''111'',2=>''222'',3=>''333'');
             foreach($arr as $k=>$v)
                    echo "{$k}_{$v}<br>"; //输出:1_111  2_222  3_333

7、对象

<?php
class foo
{
var $a=''s'';//类的变量!!

function init()  //类的函数
  {
   echo "Doing foo.";
   echo $this->a;  //引用类的变量!!
  }
}

$bar = new foo;
$bar->init();
?>
                  
 
8、变量
 
   isset($s)检查变量是否已经设置,如果还没有设置就引用$s将导致php提示: Undefined variable。
 
   默认情况下变量之间赋值是不会互相影响的(传值赋值模式);
   如果是 $a="a"; $b=&$a  这种情况下,$a和$b中任一个变量的值改动了,另外一个变量的值也随之变化(传地址赋值模式)。
 
   PHP5的预定义变量:
   $_SERVER["REMOTE_ADDR&quo


<?php
    class show_Pager
    {
      protected  $_total;                          //记录总数
      protected  $pagesize;                       //每一页显示的记录数
      public     $pages;                         //总页数
      protected  $_cur_page;                    //当前页码
      protected  $offset;                      //记录偏移量
      protected  $pager_Links;                //url连接
      protected  $pernum = 5;                //页码偏移量,这里可随意更改
   
      public function __construct($total,$pagesize,$_cur_page)
        {  
        $this->_total=$total;
        $this->pagesize=$pagesize;
        $this->_offset();
        $this->_pager();
        $this->cur_page($_cur_page);
        $this->link();
    }
   
    public  function _pager()//计算总页数
    {
    return $this->pages = ceil($this->_total/$this->pa


随着Ruby on Rails的火爆,PHP这个流行的Web应用脚本语言也出现了大量的新一代开发框架。与此同时,国内PHP开发者也在北京写字楼开始紧跟国外发展,推出了不同的开发框架。

Ruby on Rails催生变革
  在RoR流行之前,PHP领域也有不少开发框架,例如Mojavi、WACT、PHPMvc和Seagull等。这些框架虽然也采用了MVC模式、数据库抽象层等技术。但由于当时PHP本身不像现在这样流行,所以这些框架都没有得到大量应用,最终归于沉寂。
  而在感受到RoR提供的快速开发能力后,PHP社区像被注入了兴奋剂。各种应用技术和开发框架层出不穷。

新一代框架的诞生
  PHP社区在被RoR震晕后,没有陷入过多的争论。而是立即行动起来,开始了新一代框架的设计。首先出现的第一批框架几乎都是RoR的克隆。例 如PHP on Trax(连名字都借鉴Ruby on Rails)和TaniPHP、Akelos等。这些框架最大的特点就是力求100%克隆RoR,不管是采用的架构、设计模式,还是使用方法。
  这几个框架一开始确实吸引了开发者的注意,但随着开发者的深入了解,这些框架头上的光环逐步褪色。晦涩难懂的架构、糟糕的性能,以及太多的限制,让这些框架难以在实际项目中运用。
  此时,许多PHP开发者认为可以借鉴RoR的设计思想,但不应照搬RoR的结构和实现。为此,一些同样推崇快速开发的框架开始在PHP社区出现。这些框架中,CakePHP和Symfony可谓佼佼者。

CakePHP(http://www.cakephp.org/)
  CakePHP充满了RoR的影子,从ActiveRecord模式到视图的布局管理都和RoR非常相似。而且CakePHP一开始也尝试实现与 RoR一样的许多东西。但CakePHP的开发团队后来发现PHP语言和Ruby语言存在巨大区别,因此RoR中的许多设计即便能够在PHP中实现,也是缺乏实用价值的。
  CakePHP在发展中逐步走出了RoR的阴影,开始探索更能发挥PHP语言本身优势的架构和实现。因此有一段时间CakePHP的API发生了剧烈的变化,以致其他开发者纷纷停下脚步处于观望状态。
  但由于前期一些架构的不合理和对RoR太多的模仿,导致CakePHP的核心部分越来越难以理解,运行性能也不尽人意。而且CakePHP将一个庞大的数据库操作对象作为所有业务对象的基础。这虽然利于快速开发,但却导致对业务逻辑对象的测试非常困难。
  对于较小型的项目,CakePHP非常理想。北京鲜花礼品出色的快速开发能力、丰富的API和详尽的文档都可以帮助开发者很快完成工作。但随着项目规模的增加,CakePHP的局限性也变得突出。

Symfony(http://www.symfony-project.com/)
  Symfony是一个非常成熟的框架,大量利用了已有的开源项目。Symfony使用Mojavi的核心代码实现了框架的MVC模式,利用 Propel作为数据库抽象层。Symfony不仅功能强大,而且对Ajax有全面的支持。加上官方网站提供的大量文档和教程,并拥有一个活跃的社区,因 此受到许多开发者的欢迎。
  但是,Symfony最大的问题也在于使用了太多风格迥异的开源项目来组合成框架。由于Mojavi和Propel本身都相当复杂,因此Symfony的结构非常复杂,难以理解和学习。
  不过对于希望选择一个框架作为企业内部系统基础架构的企业来说,Symfony的成熟度、丰富的文档和活跃的社区都是值得考虑的。毕竟企业内部系统更为看重的是稳定性和长期的支持。

商业利益与大道至简
  看到PHP开发框架的潜在商业价值后,Zend.com联合IBM宣布将要推出一个真正能够发挥PHP优势的开发框架。一时间,这个消息在整个PHP社区引起了地震。大家都开始期盼这个具有“官方”背景的开发框架能够为PHP开发者指出一条正确的道路。
  不过世事难测,就在Zend Framework团队公布几个代码片断后,立即就有开发者指出这些代码片段是不可能实现的。事实证明这些代码片段不过是美好的理想。限于PHP语言本身 的能力,Zend Framework最终没有实现当初承诺提供的类似RoR中ActiveRecord模式的实现品。

Zend Framework(http://framework.zend.com/)
  Zend Framework大量应用了PHP5中面向对象的新特征:接口、异常、抽象类、SPL等等。这些东西的应用让Zend Framework具有高度的模块化和灵活性。同时,因为严格遵循“针对接口编程”和“单一对象职责”等原则,让Zend Framework很有希望成为一个出色的企业应用开发框架HKRFP。
  但不幸的是Zend Framework直到今天,也没有做出更多的突破。在使用Zend Framework开发时,框架对应用程序自身最重要的领域逻辑分离没有提供任何帮助

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • jQuery+PHP+MySQL实现无限级联下拉框效果

    这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21
  • php图片添加文字水印实现代码

    这篇文章主要为大家详细介绍了php图片添加文字水印实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-03-17
  • php有序列表或数组中删除指定的值的实现代码

    这篇文章主要介绍了php有序列表或数组中删除指定的值的实现代码,删除给定的值之后,得到一个新的有序列表,长度-1,下面是具体的实现方法...2021-08-22
  • PHP简单实现生成txt文件到指定目录的方法

    这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28