第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获取远程图片并把它保存到本地的代码
Apr 07 PHP
php 高性能书写
Dec 11 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP数据库操作二:memcache用法分析
Aug 16 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
详解php协程知识点
Sep 21 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP解决高并发的优化方案实例
Dec 10 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
做一个有下拉功能的留言版
2006/10/09 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
使用PHP编写发红包程序
2015/07/22 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
Zend Framework教程之Application和Bootstrap用法详解
2016/03/10 PHP
php处理复杂xml数据示例
2016/07/11 PHP
js里怎么取select标签里的值并修改
2012/12/10 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
酒店出纳岗位职责
2013/12/29 职场文书
维修工先进事迹
2014/05/29 职场文书
企业读书活动总结
2014/06/30 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
责任书格式
2019/04/18 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS