第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 相关文章推荐
一个自定义位数的php多用户计数器代码
Mar 11 PHP
PHP 柱状图实现代码
Dec 04 PHP
php中取得URL的根域名的代码
Mar 23 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
优化PHP代码技巧的小结
Jun 02 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP进程同步代码实例
2015/02/12 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
Javascript Global对象
2009/08/13 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
Python制作爬虫采集小说
2015/10/25 Python
Python人脸识别初探
2017/12/21 Python
使用python 3实现发送邮件功能
2018/06/15 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
2014年教师培训的自我评价
2014/01/03 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
怎么写自荐书范文
2014/02/12 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
体育课课后反思
2014/04/24 职场文书
读书活动总结范文
2014/04/26 职场文书
跳蚤市场口号
2014/06/13 职场文书
规范化管理年活动总结
2014/08/29 职场文书
基层党支部承诺书
2015/04/30 职场文书