0

0

PHP5.0新特性_PHP

php中文网

php中文网

发布时间:2016-06-01 12:25:32

|

950人浏览过

|

来源于php中文网

原创

(一) zend 2.0的诞生
现在的php4所使用的基本文法是被称之为zend 引擎的脚本编译引擎。这个就是php4的优良机能的原因之一,是作为对php3的改进而生成的一种语言。大家一直认为,php4的性能根据当初的目标,比php3有了很大的提升,在网络编程的世界里占据了很大的份额。

开发了zend 引擎的zend公司是在开发php4的同时,由php3的主要开发者zeev suraski和andi gutmans所创立的企业合并而来的。zend的名称是由zeev和andi的名字合起来组成的。zend公司的商业模式是,持续不断的为open source提供zend 引擎的php内核 (core),同时提升周边产品开发和贩卖的利益。以open source software作为基盘的商业,在世界范围内大多数正在苦战的企业中,算是比较好的典型例子了。

■php4的局限

托php4成功的福,这个用途的适用范围逐渐变广起来。作为企业级的用途而使用php的说法时有所闻。因此,就有了这样一个问题,构筑大规模网站的时候,代码的再利用性十分差。具体来说就是,php4的面向对象性能很弱,因此习惯于使用java等的技术人员对此有很多的抱怨。

逐步的改善php4的面向对象的性能,大幅度的更改基本文法,开发者达成了更新php记述方法的开拓目的。

■zend 2.0开始开发
随后,zend公司php中心的开发者们在2001年7月发表了作为下一代php语言引擎的zend 2.0引擎的构想。以[zend engine version 2.0: feature overview and design]
(http://www.zend.com/engine2/zendengine-2.0.pdf)作为目标的同时,面向对象的性能大幅度的强化了。
目前的php4 zend 引擎的扩张情况与昔日的php3如出一辙。这就意味着,要提升新的语言引擎的主版本号,明确方法目标,迎接来自开发团体的称赞。

ze2的开发,与以往的zend引擎一样,都是运行在open source的模式下的。最新的源代码在cvs上被全面的公开,因为是面向开放的开发者的,关于开发的议论非常的活跃。

现在ze2被决定采用于php的下一个版本php5中。最终发布的时间现在还未定,但是假如根据zend公司2003年4月1日发布的newsletter的话,现在的应该就是beta release了。

(二) php5的新特性

接下来请按照顺序看一下被强化的php5的性能。首先是最为重要的面向对象性能,类的实体特性在大幅度的被修改着。这里说的仅是关于类的新特性。

· 对象的参照过渡是默认的(default)
· 引入访问属性的限制
· 引入访问方法的限制
· 抽象类和抽象方法
· 接口
· final声明
· 名空间
· 类内常量
· 类变量
· 统一构建器
· 析构函数(distructor)
· 其他附属特性

以上内容是根据2003年4月22日cvs上登录版本资料所写的,在正式的发布之前,也有变动的可能性。

■对象的默认参照过渡

在php4中,在以变量$var1为类的实体对象的时候,如果$var2 = $var1;那么,在$var2中,$var1的复制被代入。明显的,$var2为了指向与$var1相同的对象,就要写成$var2 =& $var1,必须要加上&作为参照。
而在php5,对象的代入将成为自动的参照过渡。也就是说,
$var2=$var1,两者指向相同的对象。如果想要同php4一样,带入copy,那么就会运用到导入__clone()的方法。
$var2 = $var1->__clone();此处,clone前面是两个连续的“_”
(这仅仅是类的实体的特性)


■引入访问属性的限制

在php4的类中,连同属性和方法在内,可以自由的访问类的内外任何地方,而没有限制。因此,用户就无法防范属性的无意中的更改。

而在php5中,同c++和java一样,导入了private, protected, public三个等级的访问限制,使得类的设计者能够对属性和方法的使用方法进行限定。以下是各种访问限制的意思。

· public: 可以自由的在类的内外任何地方进行参照、变更
· private: 只能在这个类的方法中进行参照、变更
· protected:能够在这个类以及继承了这个类的另一个类的方法中进行参照、变更。另外,在继承的类中,能够写入访问指定。

在php4中的“var”,同以往一样与public有着相同的意思。下面就来举一个例子,让我们来看看访问限制是怎样起作用的。

php代码:--------------------------------------------------------------------------------
class hoge1 {
 private $var1 = 'a';
 protected $var2 = 'b';
 protected $var3 = 'c';

 function setlower() {
  $this->var1 = 'a';
  $this->var2 = 'b';
  $this->var3 = 'c';
 }
 function var1() {
  return $this->var1;
 }
 function var2() {
  return $this->var2;
 }
 function var3() {
  return $this->var3;
 }
}

--------------------------------------------------------------------------------

在这个类中,带有$var1, $var2, $var3三个属性。$var1被声明为private, $var2和$var3是protected.在此处

php代码:--------------------------------------------------------------------------------
$hoge=new hoge1;
echo’var1:’.$hoge->var1.”
n”

--------------------------------------------------------------------------------

如果尝试参照不允许从外部进行访问的private属性,那么就会出现如下错误:

fatal error: cannot access private property hoge1::$var1 in /path/to/script.php on line xx

对于protected的$var2也是相同的。

但是,因为$hoge的方法是没有private和protected的,所以下面的代码能够正常运作,返回内部私有和保护变量的值。

php代码:--------------------------------------------------------------------------------
echo 'var1: ' . $hoge->var1() . "
\n"; // var1: a
echo 'var2: ' . $hoge->var2() . "
\n"; // var2: b
echo 'var3: ' . $hoge->var3() . "
\n"; // var3: c

$hoge->setlower();

echo 'var1: ' . $hoge->var1() . "
\n"; // var1: a
echo 'var2: ' . $hoge->var2() . "
\n"; // var2: b
echo 'var3: ' . $hoge->var3() . "
\n"; // var3: c

--------------------------------------------------------------------------------

其次,为了能够看到protected的属性的状态,我们试着创造了继承了hoge1的类hoge2

php代码:--------------------------------------------------------------------------------
class hoge2 extends hoge1 {
 public $var3 = '3';

 function d_var1() {
  return $this->var1;
 }
 function d_var2() {
  return $this->var2;
 }
 function d_var3() {
  return $this->var3;
 }
}

--------------------------------------------------------------------------------

在类hoge2中,只有$var3被声明为public。在属性是protected的情况下,从子类进行访问有何种限制,是由子类的属性声明决定的。在hoge2中,因为$var3被声明是public,因此无论是从何处都可以访问hoge2的$var3(实体是hoge1的$var3)。因为$var1在hoge1中是private,因此,在hoge2子类中hoge1的$var1不会被继承,而在hoge2中有可能会做出名为$var1的属性,因此,必须要明确区分hoge1::$var1和hoge2::$var1。

php代码:--------------------------------------------------------------------------------
$hoge = new hoge2;

echo 'var1: ' . $hoge->var1 . "
\n";   // var1:
// echo 'var2: ' . $hoge->var2 . "
\n";  // error
echo 'var3: ' . $hoge->var3 . "
\n";   // var3: 3

echo 'var1: ' . $hoge->d_var1() . "
\n"; // var1:
echo 'var2: ' . $hoge->d_var2() . "
\n"; // var2: b
echo 'var3: ' . $hoge->d_var3() . "
\n"; // var3: 3

--------------------------------------------------------------------------------

magento(麦进斗)
magento(麦进斗)

Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的

下载

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

115

2025.12.24

拼豆图纸在线生成器
拼豆图纸在线生成器

拼豆图纸生成器有PixelBeads在线版、BeadGen和“豆图快转”;推荐通过pixelbeads.online或搜索“beadgen free online”直达官网,避开需注册的诱导页面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

82

2025.12.24

俄罗斯搜索引擎yandex官方入口地址(最新版)
俄罗斯搜索引擎yandex官方入口地址(最新版)

Yandex官方入口网址是https://yandex.com。用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

546

2025.12.24

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

20

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

47

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

7

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

12

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

371

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6万人学习

Django 教程
Django 教程

共28课时 | 2.4万人学习

NumPy 教程
NumPy 教程

共44课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号