第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中创建并处理图象
Oct 09 PHP
用来给图片加水印的PHP类
Apr 09 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
php读取csc文件并输出
May 21 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
Yii实现简单分页的方法
Apr 29 PHP
详解php中 === 的使用
Oct 24 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
python进程与线程小结实例分析
Nov 11 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
星际RPG字典
2020/03/04 星际争霸
PHP Mysql编程之高级技巧
2008/08/27 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python对于requests的封装方法详解
2019/01/03 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
高中毕业生的个人自我评价
2014/02/21 职场文书
校园公益广告语
2014/03/13 职场文书
工作失职检讨书
2015/01/26 职场文书
项目建议书
2015/02/04 职场文书
房屋所有权证明
2015/06/19 职场文书
退休欢送会主持词
2015/07/01 职场文书