第1次亲密接触PHP5(2)


Posted in PHP onOctober 09, 2006

接上篇,继续硬着头皮往下翻。。。。:)
类型指示

在PHP5,你可以在一个类的方法中指明其参数必须为一个类的实例:

Example 10: 类型实例

<?php
class foo {
  // code ...
}

class bar {
  public function process_a_foo(foo $foo) {
   // Some code
  }
}

$b = new bar();
$f = new foo();
$b->process_a_foo($f);
?>

可以看到,在变量前指定一个类名,让PHP5知道这个变量将是一个类的实例

静态成员

静态成员和静态方法在OOP中一般称为"类变量"和"类方法"。

一个"类方法"可以在对象没有被实例化的时候调用
一个"类变量"可以在对象没有被实例化的时候访问(也不需要对象的方法来调用)

Example 11: 类变量和类方法

<?php
class calculator {
  static public $pi = 3.14151692;

  static public function add($x,$y) {
    return $x + $y;
  }
}

$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>

* 异常处理

异常处理是开发语言中公认的处理异常错误的方法,如在JAVA和C++中。
PHP5用"try"和"catch"关键字来捕获异常。

Example 12: 异常处理

<?php
class foo {

  function divide($x,$y) {
    if($y==0) throw new Exception("cannot divide by zero");
    return $x/$y;
  }
}

$x = new foo();

try {
  $x->divide(3,0);   
} catch (Exception $e) {
    echo $e->getMessage();
    echo "\n<br />\n";
    // Some catastrophic measure here
}
?>

可以看出,"try"表示的是执行代码的地方,当有错误的时候执行"catch"区域的代码。
在"catch"区域你应当指明执行异常的对象,这样可以使我们的结构更清晰

自定义异常处理

你可以在程序中定义自己习惯的捕获异常错误的代码。
非常简单,你仅仅需要继承一个异常类,在这个类中需要一个构造器和一个叫getMessage的方法而已:

Example 13: 自定义异常类

<?php
class WeirdProblem extends Exception {

   private $data;

   function WeirdProblem($data) {
        parent::exception();
        $this->data = $data;
    }

    function getMessage() {
        return $this->data . " caused a weird exception!";
    }
}
?>

现在就可以用"throw new WeirdProblem($foo) "来抛出异常。如果在try{}这样的区域中出现异常,PHP5就会跳入
catch区域来抛出异常。

名称空间

"名称空间"可以让你方便地调用一组类或方法:

Example 14: 名称空间

<?php
namespace Math {

  class Complex {
    //...code...
    function __construct() {
      print("hey");
    }
  }
}

$m = new Math::Complex();
?>

注:在实际应用中,你可以在不同的名称空间里定义同名的类来完成不同的任务(但接口要相同)
<翻译完毕>

终天蹩手蹩脚地翻译完了,有些翻译不正确的地方,如术语、对原文的理解,敬请一一指出,共同完善,共同开始PHP5的学习、探讨。。。

PHP 相关文章推荐
PHP4.04简明安装
Oct 09 PHP
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
PHP多文件上传类实例
Mar 07 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
PHP的FTP学习(一)[转自奥索]
Oct 09 #PHP
一个多文件上传的例子(原创)
Oct 09 #PHP
[FAQ]PHP中的一些常识:类篇
Oct 09 #PHP
Oracle Faq(Oracle的版本)
Oct 09 #PHP
PHP 和 HTML
Oct 09 #PHP
数据库相关问题
Oct 09 #PHP
编译问题
Oct 09 #PHP
You might like
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
python 网络编程详解及简单实例
2017/04/25 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
python实现图像拼接功能
2020/03/23 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
找到不普通的东西:Bonanza
2016/10/20 全球购物
给酒店员工的表扬信
2014/01/11 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
污水处理保证书
2015/05/09 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
详解java如何集成swagger组件
2021/06/21 Java/Android
详解MongoDB的条件查询和排序
2021/06/23 MongoDB