新版PHP将向Java靠拢


Posted in PHP onOctober 09, 2006

所谓的“PHP”就是开放源码的Web应用开发/运行环境,日前《日经Open System》记者就今后PHP开发中心的发展计划等问题采访了该中心成员Zeev Suraski。Zeev Suraski表示,新版PHP中将导入try、catch等语句,从而更接近Java,以便更容易地进行大型系统的开发。(采访者:高桥 信赖)

--请您谈一下决定开发PHP的起因。

Rasmus Lerdorf于1995年首先公布了PHP。1997年我在制作以色列大学网页及网上商店站点时,使用了当时名为PHP/FI(Personal Home Page/Form Interpreter)的工具,这时才开始接触到PHP。在使用的过程中,发现了一个很大的bug。由于源码是公开的,所以我对bug产生的原因进行了调查并做了修改,在调查中发现还有很大的改进余地。于是就和当时共同做项目的Andi Gutmans一起对PHP/FI脚本执行引擎进行了修改。修改后的执行引擎交给Lerdorf后,就成了新版PHP3.0的正式执行引擎。

通过改进脚本执行引擎,我们开发出了速度更高的Zend Engine。Zend这个名字是Zeev与Andi的组合。嵌入了Zend Engine的PHP就是目前的版本PHP4。原来的程序是边读入边解释来执行,后来改成了每个执行周期解释一次 ,因此执行100个周期就要进行100次同样的解释处理。而Zend Engine则是一开始就对整个文件的脚本进行解释 ,然后再开始执行。由于大幅削减了解释过程,所以执行速度得以大幅提高。

PHP4在发表后2个月内就被下载了26万5000次。据美国调查公司Netcraft统计,目前PHP至少被安装在600万个域名服务器上。

我想PHP受到人们欢迎的最主要原因就是简单实用。曾有人在给我的邮件中表示:“尽管没有编程经验,但我使用PHP仅用3个小时就写出了简单的程序”。使用Java就达不到这种程度。此外,PHP是针对WWW开发的,因此,还可以方便地处理Cookie与表单。

PHP是免费的,今后仍将继续免费发布,但考虑到商业成本与支持产品的要求,于1999年设立了以色列Zend,并开发出高速PHP软件及综合开发工具进行销售。

--预定2002年底发布的新版PHP5中,准备扩展哪些功能?

将进一步改进面向对象功能,使大型系统的开发更加容易。尽管PHP已经具有类与子类等,但PHP5会更接近Java。将引入了try、catch等Java具有的特殊处理语句结构。

在PHP4中,函数作为变量使用,即使给出一个对象也不会发生变化。PHP可以标准赋值,对象也可以赋值,所以函数值并非对象本身,而是一个拷贝过来的值。当函数需要变更为对象数值时,就要在作为变量的对象前加上“&”符号来专门提示。在Java中不需要这样的提示,而PHP5则采用的是与Java相同的模式。

此外,PHP5还导入了名称空间(Name Space),名称空间确定后,函数、变量、类名的有效范围均被限制在名称空间内。当清楚名称范围后,在使用变数与函数名时就可以忽略重复的名称,这也方便了大型程序的开发。

名为“stream”的新功能也是一项便利的功能。它可以使WWW服务器与ftp服务器上的文件与本地文件使用同样的函数。也就是说,fopen(本地文件名)可以像fopen(hppt://主机名/文件名)一样使用。压缩文件可像普通的非压缩文件一样处理。而且不用等到PHP5,在以后发布的PHP4中就将安装上“stream”。

--有人指出,由于PHP为HTML嵌入型,和Java一样难以将显示(Presentation)与逻辑部分分离,难以实现模块化。

事实上,使用PHP完全能够分离显示与逻辑部分。PHP有一项调出Java对象的功能。可以将PHP作为显示层、将Java对象作为逻辑层使用。

另一个方法就是使用模板库Smarty的方法。Smarty是一个从HTML模板动态生成HTML的工具。即便HTML中完全没有写入PHP逻辑,也可以生成符合HTML的PHP运行结果。

尽管如此,也并不是说在任何情况下分离显示与逻辑都是有利的。比如在开发小型系统时,分离后反而变得更复杂,很难对整体进行把握,最终影响开发效率,这就是缺点所在。

--2002年2月底,PHP曾被发现存在严重的安全漏洞。

PHP在5年时间里都没有出现过严重的安全漏洞,但不幸在2月底发现文件上传功能存在问题。

我们认为安全性至关重要,并对此采取了2项措施:首先,在接到安全漏洞报告的30个小时内制作并公布了补丁。哪种软件也不能保证绝对不会出现安全漏洞。今后如发现有严重安全漏洞,我们仍将会倾尽全力、迅速采取补救措施。

其次,我们已经开始检查PHP的源码,展开了安全检查。即使不是自身的安全漏洞,也要对可能出现问题的部分进行检查并进行修正。

PHP 相关文章推荐
php error_log 函数的使用
Apr 13 PHP
php 分页类 扩展代码
Jun 11 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
PHP7 参数处理机制修改
Mar 09 PHP
JAVA/JSP学习系列之七
Oct 09 #PHP
PHP开发大型项目的一点经验
Oct 09 #PHP
JAVA/JSP学习系列之六
Oct 09 #PHP
PHP的宝库目录--PEAR
Oct 09 #PHP
PHP中调用JAVA
Oct 09 #PHP
PHP数据库操作面向对象的优点
Oct 09 #PHP
PHP5中MVC结构学习
Oct 09 #PHP
You might like
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
详解JavaScript的变量
2019/04/04 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
业务总经理岗位职责
2014/02/03 职场文书
关于元旦的广播稿
2014/02/16 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
青年文明号创建承诺
2014/03/31 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
青年教师个人总结
2015/02/11 职场文书
2015年中个人总结范文
2015/03/10 职场文书
消夏晚会主持词
2015/06/30 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
医院保洁员管理制度
2015/08/05 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
SQL Server删除表中的重复数据
2022/05/25 SQL Server