第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的学习、探讨。。。
二泉
2003/7/2于郑州
↓相关文章:
- · PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
- · 对盗链说再见...
- · [FAQ]PHP中的一些常识:类篇
- · Oracle Faq(如何在ORACLE中更改表的列名和顺序 )
- · Oracle Faq(Oracle的字符集问题)
- · PHP 和 HTML
- · PHP安装问题
- · PHP 和 COM
- · 提问的智慧(2)
- · apache的几个设置(目录,权限等)
- · 用PHPdig打造属于你自己的Google
- · 利用PHP和AJAX创建RSS聚合器
- · PHP5的异常处理机制之使用throw关键字
- · AJAX在PHP中的简单使用
- · web开发中PHP+MySQL分页显示示例分析
- · 使用PHP编写基于Web的文件管理系统
- · Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- · 三招针对PHP木马攻击的易行防御之道
- · PHP程序漏洞产生的原因和防范方法
- · PHP取得当前插入数据库中记录的id值
- · php中关于处理字符串时效率的讨论
- · PHP+Access设计留言版实战
- · PHP实现的文件直接输出下载
- · PHP建立动态的WML站点
- · 简单站内HTML文件搜索程序
- · 自建Blog网站完全图解
- · phpMyAdmin2.6以上版本数据乱码问题
- · 关于PHP事件驱动问题之我见
- · PHP + BAT 制作PHP自解析批处理
- · [图片 显示] 缩图循环显示(php,mysql,script)
- · mysql 自动备份----aspbiz
- · PHP日常实用小Tips
- · Php应用实例--新增资料录到MySQL资料表
- · PHP-Push技术实现刷新功能 转载
- · 四种提示框代码
- · php 分析rss代码一段
- · 如何正确理解 PHP 的错误信息
- · 身份证方面的函数
- · Win XP下全新安装Apache2,PHP5,MYSQL5
- · linux下apache+mysql+php开发环境纯源代码编译搭建
- · RedhatAS3.0上安装Apache2+PHP5+MySQL+Resin+SSL+GD+weba
- · 给图片生成缩略图和加版权的类
- · 一段防盗连的PHP代码
- · 一个FTP树状目录(PHP)
- · 一个双向加密解密法(php)

