第1次亲密接触PHP5(2)

  接上篇,继续硬着头皮往下翻。。。。:)

  类型指示

  在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的学习、探讨。。。