当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP5中的三大特色功能

PHP
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十七) 自动加载类
PHP parse_url 一个好用的函数
PHP 字符串分割和比较
全世界最小的php网页木马一枚 附PHP木马的防范方法
PHP 日期加减的类,很不错
PHP 日期时间函数的高级应用技巧
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Ha0k 0.3 PHP 网页木马修改版
PHP iconv 函数转gb2312的bug解决方法
关于页面优化和伪静态
使用zend studio for eclipse不能激活代码提示功能的解决办法
PHP 身份验证方面的函数
基于OpenCV的PHP图像人脸识别技术
用mysql触发器自动更新memcache的实现代码
php 数学运算验证码实现代码
PHP网站开发方案实例
PHP教程:挖掘细节提升网站性能
搜索引擎技术核心揭密(PHP)

PHP5中的三大特色功能


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 91 ::
收藏到网摘: n/a

  PHP5 中的三大特色功能。这三大特点为:
  
  * 新的对象模式 (New Object Mode)
  
  * 异常处理 (Exceptions)
  
  * 名称空间 (Namespace)
  
  在开始之前,要声明两点:
  
  * 文章中的例子为了说明如何操作,有些部分使用了 PHP4 的表现手段,这仅仅是为了提高文章的可读性。
  
  * 文章中描述的部分与 PHP5 的最终发布版可能会有一些出入
  
  在 PHP5 没有最终正式发布前,你可以随时从 http://snaps.php.net 下载到最新的编译版本来亲自体验一下 PHP5 所带给我们这些崭新的功能。
  
  新的对象模式
  
  PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)
  
  * 构造函数和析构函数
  
  * 对象的引用
  
  * 对象的克隆
  
  * 对象中的私有、公共及受保护模式
  
  * 接口 (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 pr