第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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
php while循环得到循环次数
Oct 26 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
php文件上传后端处理小技巧
May 22 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php实现的http请求封装示例
Nov 08 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
Python 多线程Threading初学教程
2017/08/22 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python 文件查找及内容匹配方法
2018/10/25 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
财务部绩效考核方案
2014/05/04 职场文书
年检委托书
2014/08/30 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis