第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.ini中文版
Oct 09 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
php学习之数据类型之间的转换代码
May 29 PHP
sql注入与转义的php函数代码
Jun 17 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
php实现的一段简单概率相关代码
May 30 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 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缓存集成库phpFastCache用法
2014/12/15 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
js数组常用最重要的方法
2018/02/04 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
python 控制语句
2011/11/03 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
中专生自荐信
2013/10/12 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
护士岗位竞聘书
2015/09/15 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python