第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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php简单图像创建入门实例
Jun 10 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
php封装json通信接口详解及实例
Mar 07 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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 日期加减的类,很不错
2009/10/10 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php实现中文转数字
2016/02/18 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
php无限极分类实现方法分析
2019/07/04 PHP
一个JavaScript变量声明的知识点
2013/10/28 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
实习自荐信
2013/10/13 职场文书
社区工作感言
2014/02/21 职场文书
关于读书的演讲稿
2014/05/07 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis