初探 PHP5

邢台_奋青

邢台_奋青

2016-01-29 15:22

初探 PHP5,初探 PHP5
在以下的介绍中,我们将重点讲述 PHP5 中的三大特色功能。这三大特点为:

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

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

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

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


新的对象模式

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

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

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


构造函数和析构函数

在 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 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。

例二:对象的引用

<?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 func

展开更多 50%)
分享

猜你喜欢

初探 PHP5

PHP
初探 PHP5

初探PHP5

Web开发
初探PHP5

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

初探 PHP5 (二)

PHP
初探 PHP5 (二)

初探 PHP5 (一)

PHP
初探 PHP5 (一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

php5学习笔记

PHP
php5学习笔记

PHP5试用(二)

Web开发
PHP5试用(二)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《马里奥网球公开赛》必胜BUG

《马里奥网球公开赛》必胜BUG

接触 solaris : 安装 apache + php + mysql

接触 solaris : 安装 apache + php + mysql
下拉加载更多内容 ↓