本章我们了解:
.标准函数库的缺陷以及面向对象的程序如何帮助我们解决问题
.在php5中如何声明、实现和使用类
.如何扩展已编好的类
.如何创建共享实现的相关类的层次结构和暴露通用程序设计接口的类
.php中类的一些其它细节的特性
4.1 超越库之外
4.2 面向对象的程序设计
4.2.1 一些基本术语
属性
成员函数:
类:
实例:以上具体概念本人不具体写,可参考相关c++
4.2.2 php中对象的基础
声明成员变量
2
3 define('LOCAL_PRODUCT', 1);
4 define('NAVIGATION_PARTNER_PRODUCT', 2);
5
6
7 //
8 // "ProductID"
9 // "Name"
10 // "Description"
11 // "Price"
12 // "Location"
13 //
14
15
16
17 class Product
18 {
19 public $product_id;
20 public $product_name="unknown product";
21 public $product_desc;
22 public $price_per_unit;
23 public $product_location=local_product;
24 }
25
26
27
28 ?>
创建对象实例,你需要使用关键字new,后面是实例化的类的名称
<?php
$prod=new Product();
?>
使用操作符->访问类的实例的成员变量
<?php
echo“the product's name is {$prod->name}<br/>\n";
?>
使用相同的操作符设置成员变量的值
<?php
$prod->name="stormmeister 3000 weather redar”;
?>
把成员函数添加到你的类中,只需把函数放到声明之内,在成员函数旁边。
define('LOCAL_PRODUCT', 1);
define('NAVIGATION_PARTNER_PRODUCT', 2);
//
// "ProductID"
// "Name"
// "Description"
// "Price"
// "Location"
//
class Product
{
public $product_id;
public $product_name;
public $product_desc;
public $price_per_unit;
public $product_location;
public function check_product_in_stock($in_num_desired)
{
if ($this->product_location == LOCAL_PRODUCT)
{
// go to our local dbs and see how many we have left. return -1
// on a failure of some sort.
}
else if ($this->product_location == NAVIGATION_PARTNER_PRODUCT)
{
// go to our navigation equipment partner's servers and see how
// many are left. return -1 on failure.
}
else
{
// invalid product location -- indicate error. We'll show you
// how to do this better later in Chapter 23.
return -1;
}
}
public function ship_product_units($in_num_shipped)
{
if ($this->product_location == LOCAL_PRODUCT)
{
// go to our local dbs and mark $in_number units as no longer
// available. Return TRUE on success, FALSE on failure.
}
else if ($this->product_location == NAVIGATION_PARTNER_PRODUCT)
{
// go to our navigation equipment partner's servers and mark
// $in_number units as no longer available. Return FALSE on
// failure, TRUE on success.
}
else
{
// invalid product location -- indicate error. We'll show you
// how to do this better later in Chapter 23.
return FALSE;
}
}
}
?>
4.2.3 初始化和清除对象
php并不立即删除对象;它只会在它确认没有人再引用对象时删除对象。
4.2.4 可见性:控制看这些数据的人
4.2.5 把静态数据添加到类
4.3 扩展对象
4.3.1 扩展已有的类
4.3.2 再次讲解可见性
4.3.3 基类方法的重现
4.3.4 使类的行为相同:多态性
4.4 其他特性
4.4.1 对象的比较
4.4.2 对象的克隆
4.4.3 友好界面的输出
4.4.4 类型提示
4.4.5 自动加载
4.5 小结