第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 相关文章推荐
Ha0k 0.3 PHP 网页木马修改版
Oct 11 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
Zend Framework处理Json数据方法详解
Dec 09 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
laravel框架使用极光推送消息操作示例
Feb 15 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php 判断数组是几维数组
2013/03/20 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php实现文件下载实例分享
2014/06/02 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
python实现自动清理重复文件
2020/08/24 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
主题婚礼策划方案
2014/02/10 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
陈欧广告词
2014/03/14 职场文书
装修活动策划方案
2014/08/27 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书