第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 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP生成Flash动画的实现代码
Mar 12 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
php 文件上传类代码
Aug 06 PHP
php中日期加减法运算实现代码
Dec 08 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
php微信开发之百度天气预报
Nov 18 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
PHP实现动态创建XML文档的方法
Mar 30 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php生成短网址示例
2014/05/05 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
Python简单定义与使用二叉树示例
2018/05/11 Python
详解Python中的四种队列
2018/05/21 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
Dr.Jart+美国官网:韩国药妆品牌
2019/01/18 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
写好自荐信要注意的问题
2013/11/10 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
关于旷工的检讨书
2014/02/02 职场文书
导购员的岗位职责
2014/02/08 职场文书
《祁黄羊》教学反思
2014/04/22 职场文书
学习之星事迹材料
2014/05/17 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
使用python绘制分组对比柱状图
2022/04/21 Python