第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常用函数小技巧
Sep 11 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 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
Dedecms常用函数解析
2008/02/01 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue实现循环滚动列表
2020/06/30 Javascript
原生js实现购物车
2020/09/23 Javascript
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python的标准模块包json详解
2017/03/13 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python 三元运算符使用解析
2019/09/16 Python
django框架ModelForm组件用法详解
2019/12/11 Python
python实现的分层随机抽样案例
2020/02/25 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
公司表扬信格式
2015/05/04 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
使用Python拟合函数曲线
2022/04/14 Python