第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 中的批处理的实现
Jun 14 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
PHP开发的一些注意点总结
Oct 12 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
PHP实现文件下载详解
Nov 27 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
php实现的任意进制互转类分享
Jul 07 PHP
PHP处理会话函数大总结
Aug 05 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 PHP
PHP sdk实现在线打包代码示例
Dec 09 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的知识
2006/11/17 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
xml转json的js代码
2012/08/28 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
window.location.reload 刷新使用分析(去对话框)
2015/11/11 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
分析python切片原理和方法
2017/12/19 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
3分钟学会一个Python小技巧
2018/11/23 Python
python梯度下降算法的实现
2020/02/24 Python
45个非常奇妙的CSS3 特性应用示例
2012/01/01 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
幼儿园家长会欢迎词
2014/01/09 职场文书
教堂婚礼主持词
2014/03/14 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
追讨欠款律师函
2015/05/27 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
Python图像处理之图像拼接
2021/04/28 Python