263企业邮箱—中国企业邮箱第一品牌

263企业邮箱申请热线: 800-820-1263
企业邮箱首页 | 产品优势 | 成功客户 | 服务说明 | 解决方案 | 产品价格 | 如何购买 | 功能演示 | 在线帮助
    

中小企业发展推动企业邮箱服务步...

组合拳威力初显 263企业邮箱...

263企业邮箱推出263G邮箱...

outlook错误(0x800...

南火科技深切慰问汶川地震灾区同...

企业邮箱运营商服务沪企屡出“绝...

超大邮箱空间

智能反垃圾系统

超大附件
南北电信互通保障
海外转发
服务品质保障

企业邮箱用户使用手册

企业邮箱用户使用手册PDF文件下载

企业邮箱管理员使用手册

企业邮箱服务品质保障协议(SLA)
Outlook Express 错误代码表
基本测试命令
退信的常见问题及解决方法
PHP手册
企业邮件监控跟踪方案
防范垃圾邮件解决方案
海外企业邮件发送方案
南北邮件问题解决方案
超大企业邮箱空间方案
超大附件发送解决方案
邮件查杀病毒解决方案
 

PHP 手册

章 18. 类与对象(PHP 4)

类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:

<?php
class Cart {
var $items; // 购物车中的物品

// 将 $num 个 $artnr 物品加入购物车

function add_item($artnr, $num) {
$this->items[$artnr] += $num;
}

// 将 $num 个 $artnr 物品从购物车中取出

function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} elseif ($this->items[$artnr] == $num) {
unset($this->items[$artnr]);
return true;
} else {
return false;
}
}
}
?>

上面的例子定义了一个 Cart 类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。

警告

不能将一个类的定义分割到多个文件中。也不能将一个类的定义分割到多个 PHP 块中,除非该分割是在一个方法声明内部。以下用法将不起作用:

<?php
class test {
?>
<?php
function test() {
print 'OK';
}
}
?>

但是以下用法是可以的:

<?php
class test {
function test() {
?>
<?php
print 'OK';
}
}
?>

以下警告仅用于 PHP 4。

注意

名称 stdClass 已经被 Zend 使用并保留。不能在 PHP 代码中定义名为 stdClass 的类。

注意

函数名 __sleep 和 __wakeup 在 PHP 类中是魔术函数。除非想要与之联系的魔术功能,否则在任何类中都不能以此命名函数。

注意

PHP 将所有以 __ 开头的函数名保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在 PHP 中将函数名以 __ 开头。

在 PHP 4 中,var 变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。

<?php
/* PHP 4 中不能这样用 */
class Cart {
var $todays_date = date("Y-m-d");
var $name = $firstname;
var $owner = 'Fred ' . 'Jones';
/* 不过包含有常量的数组可以 */
var $items = array("VCR", "TV");
}

/* 应该这样进行 */
class Cart {
var $todays_date;
var $name;
var $owner;
var $items = array("VCR", "TV");
function Cart() {
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
/* etc. . . */
}
}
?>

类也是一种类型,就是说,它们是实际变量的蓝图。必须用 new 运算符来创建相应类型的变量。

<?php
$cart = new Cart;
$cart->add_item("10", 1);

$another_cart = new Cart;
$another_cart->add_item("0815", 3);
?>

上述代码创建了两个 Cart 类的对象 $cart 和 $another_cart,对象 $cart 的方法 add_item() 被调用时,添加了 1 件 10 号商品。对于对象 $another_cart,3 件 0815 号商品被添加到购物车中。

$cart 和 $another_cart 都有方法 add_item(),remove_item() 和一个 items 变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的 README.TXT 文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在 PHP 术语中,根目录将是全局名字空间,路径名符号将是 ->。因而,名称 $cart->items 和 $another_cart->items 命名了两个不同的变量。注意变量名为 $cart->items,不是 $cart->$items,那是因为在 PHP 中一个变量名只有一个单独的美元符号。

<?php
// 正确,只有一个 $
$cart->items = array("10" => 1);

// 不正确,因为 $cart->$items 变成了 $cart->""
$cart->$items = array("10" => 1);

// 正确,但可能不是想要的结果:
// $cart->$myvar 变成了 $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);
?>

在定义类的时候,无法得知将使什么名字的对象来访问:在编写 Cart 类时,并不知道之后对象的名称将会命名为 $cart 或者 $another_cart。因而你不能在类中使用 $cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量 $this 来达到这个目的。$this 变量可以理解为“我自己的”或者“当前对象”。因而 '$this->items[$artnr] += $num' 可以理解为“我自己的物品数组的 $artnr 计数器加 $num”或者“在当前对象的物品数组的 $artnr 计数器加 $num”。

注: 伪变量 $this 通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则 $this 会被定义。此时 $this 的值是那个发出调用的对象。用下例演示:

<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}

class B
{
function bar()
{
A::foo();
}
}

$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>

上例将输出:

$this is defined (a) 
 $this is not defined.
  $this is defined (b) 
 $this is not defined.

注: 有一些不错的函数用来处理类和对象。应该关注一下类/对象函数

 

  

后退      起点      前进


关于我们 | 联系我们 | 如何交费 | 招聘信息 | 合作伙伴 | 友情链接 | 版权声明 | 隐私保护 | 新闻中心 | 网站地图 | 企业邮箱博客
263企业邮局—中国企业邮局第一品牌 Copyright© 1998-2006  263企业邮箱版权所有 All rights reserved.
电话: 021-51099455  800-820-1263 (上海) 传真: 021-51062789