初探 PHP5 (一)

2016-01-29 13:18 8 1 收藏

初探 PHP5 (一),初探 PHP5 (一)

【 tulaoshi.com - PHP 】

虽然 PHP5 还没有正式发布(开发版本已经提供下载),但我们现在就可以开始体验一下新的版本 将要带给我们的惊喜。在以下的介绍中,我们将重点讲述 PHP5 中的三大特色功能。这三大特点为:

* 新的对象模式 (New Object Mode)
* 异常处理 (Exceptions)
* 名称空间 (Namespace)

在开始之前,要声明两点:

* 文章中的例子为了说明如何操作,有些部分使用了 PHP4 的表现手段,这仅仅是为了提高文章的可读性。
* 文章中描述的部分与 PHP5 的最终发布版可能会有一些出入

在 PHP5 没有最终正式发布前,你可以随时从 http://snaps.php.net 下载到最新的编译版本来亲自体验一下 PHP5 所带给我们这些崭新的功能。


新的对象模式

PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)

* 构造函数和析构函数
* 对象的引用
* 对象的克隆
* 对象中的私有、公共及受保护模式
* 接口 (Interfaces)
* 抽象类
* __call
* __set 和 __get
* 静态成员

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)


构造函数和析构函数

在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。

例一:构造函数和析构函数

<?php
class foo {
var $x;
function __construct($x) {
$this-x = $x;
}
function display() {
print($this-x);
}
function __destruct() {
print("bye bye");
}
}
$o1 = new foo(4);
$o1-display();
?

在上面的例子中,当你终止调用 foo 类的时候,其析构函数将会被调用,上例中会输出 bye bye。


对象的引用

众所周知,在PHP4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号 & 来声明是要做一个引用,而不是一个 Copy。在 PHP5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。

例二:对象的引用

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

<?php
class foo {
var $x;
function setX($x) {
$this-x = $x;
}
function getX() {
return $this-x;
}
}
$o1 = new foo;
$o1-setX(4);
$o2 = $o1;
$o1-setX(5);
if($o1-getX() == $o2-getX()) print("Oh my god!");
?


对象的克隆

如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。

例三:对象的克隆
<?php
class foo {
var $x;
function setX($x) {
$this-x = $x;
}
function getX() {
return $this-x;
}
}
$o1 = new foo;
$o1-setX(4);
$o2 = $o1-__clone();
$o1-setX(5); if($o1-getX() != $o2-getX()) print("Copies are independant");
?

对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)


对象中的私有、公共及保护模式

PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。

公共模式(Public):允许在对象外部进行操作控制。
私有模式(Private):只允许本对象内的方法对其进行操作控制。
受保护模式(Protected):允许本对象及其父对象对其进行操作控制。

例四: 对象中的私有、公共及受保护模式

<?php
class foo {
private $x;
public function public_foo() {
print("I'm public");
}
protected function protected_foo() {
$this-private_foo(); //Ok because we are in the same class we can call private methods
print("I'm protected");
}
private function private_foo() {
$this-x = 3;
print("I'm private");

来源:http://www.tulaoshi.com/n/20160129/1489661.html

延伸阅读
标签: Web开发
* 本文是对《Classes and Objects in PHP5》系列文章的补充和修正,介绍了PHP5对象体系的总体框架,但有些特性没有具体介绍。强烈建议在读过《Classes and Objects in PHP5》后阅读本文。 PHP5推出的对象体系相信是大家最为期待的。PHP5借鉴了Java2的对象模型,提供了较为强大的面向对象编程支持,使用PHP来实现OO将变得轻松和自然。 ...
标签: PHP
RT,原来可以用于访问2000的语句用在2003上出错了 以下是原来用于访问ACCESS 2000的语句 <?php $db="xxx.mdb"; $conn=new COM('ADODB.Connection') or die('can not start Active X Data Objects'); $conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db"); ? [ 本帖最后由 dragon005 于 2006-10-6 09:04...
标签: Web开发
新的对象模型 PHP中的对象处理部分已完全重写,具有更佳的性能和更多的功能。在先前的PHP版本中,对象被当做原始的简单类型 (如integer和string)来处理,这种方法的缺点是当变量被赋值或作为参数传递时,得到的是对象拷贝。而在新版本中, 对象是通过句柄来引用的,而不是通过对象的值(句柄想象为对象的标识符)。 很多PHP程序员可能...
标签: Web开发
一.介绍 现在在开发WEB应用的时候,比较流行的一种做法就是使用“MVC”结构,使用如此方式去开发WEB应用程序,逻辑性强、简浩明了,使程序设计起来更加方便,快捷。何为“MVC”呢?简单的来说,它就是“模型(Model)”、“视图(View)”及“控制器(Controller)”的结合体,也就是所有的“三层”抽象结构,当然这里所说的“MVC”是针对W...