第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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP积分兑换接口实例
Feb 09 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
PHP数组基本用法与知识点总结
Jun 02 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+SqlServer实现分页显示
2006/10/09 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
浅析Python中的多条件排序实现
2016/06/07 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
python的依赖管理的实现
2019/05/14 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python 内置函数汇总详解
2019/09/16 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python阶乘求和的代码详解
2020/02/14 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
竞争性谈判邀请书
2014/02/06 职场文书
职位说明书范文
2014/05/07 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
美丽心灵观后感
2015/06/01 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python