第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 print EOF实现方法
May 21 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
Zend的Registry机制的使用说明
May 02 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP实现本地图片转base64格式并上传
May 29 PHP
CI框架简单分页类用法示例
Jun 06 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
FCKeditor的安装(PHP)
2007/01/13 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
js实现小星星游戏
2020/03/23 Javascript
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
境外导游求职信
2014/02/27 职场文书
春风行动实施方案
2014/03/28 职场文书
节约用水演讲稿
2014/05/21 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
Python中requests库的用法详解
2022/06/05 Python