新版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 相关文章推荐
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
ThinkPHP发送邮件示例代码
Oct 08 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 PHP
php实现的错误处理封装类实例
Jun 20 PHP
php 猴子摘桃的算法
Jun 20 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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脚本的10个技巧(8)
2006/10/09 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
PHP与以太坊交互详解
2018/08/24 PHP
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
英国健身专家:WIT Fitness
2021/02/09 全球购物
高中美术教学反思
2014/01/19 职场文书
小学音乐教学反思
2014/02/05 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
免职证明样本
2014/10/23 职场文书
毕业生自荐信范文
2015/03/05 职场文书
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL