第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中读取和写入WORD文档的代码
Apr 09 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
php通过sort()函数给数组排序的方法
Mar 18 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
php curl发送请求实例方法
Aug 01 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
TP5框架实现签到功能的方法分析
Apr 05 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中一个完整表单处理实现代码
2011/11/10 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
php的socket编程详解
2016/11/20 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python中bisect的用法
2014/09/23 Python
多版本Python共存的配置方法
2017/05/22 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
化工机械应届生求职信
2013/11/04 职场文书
快递业务员岗位职责
2014/01/06 职场文书
高中校园广播稿
2014/01/11 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
给病人的慰问信
2015/03/23 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python
Python如何使用循环结构和分支结构
2022/04/13 Python