php 创建类

来源:互联网 发布:单片机与plc的区别 编辑:程序博客网 时间:2024/06/05 03:57

6.2.1 创建类
在PHP 中,要创建一个类很简单,只需要关键字class 即可,一个最简单的类如下所示:
class classname
{
}
在上面的代码中,classname 表示类名,类名的选择尽量有一定的意义,这样方便记忆和
理解。
当然以上只是创建了一个空类而已,如果想它实现一定的功能,必须为该类添加属性和方法。
下面的代码为类添加了两个属性:
第6 章 PHP 与面向对象程序设计 187
class classname
{
var $myName;
var $myAge;
}
创建类的属性也很简单,只需要在类中声明变量即可。声明了属性之后,可以获取该属
性的值。
除了可以创建属性之外,还可以为类创建方法。为类创建方法也很简单,只需要创建函
数即可,函数既可以有参数,也可以没有参数。如下面代码所示:
class classname
{
var $myName;
var $myAge;
function getName()
{
}
function getAge($arg1,$arg2)
{
}
}
在上面代码中,创建了两个类的方法,方法名称分别为getName 和getAge。可以往函数
中添加代码以实现某种设定的功能。
代码 6-1 定义了一个名为Cart 的类。
【代码 6-1】 class_1.php
<?php
class Cart
{
var $items; // 购物车中的项目
// 把 $num 个 $artnr 放入车中
function add_item ($artnr, $num)
{
//代码
}
// 把 $num 个 $artnr 从车中取出
function remove_item ($artnr, $num)
{
//代码
}
}
?>
在代码6-1 中,定义了一个属性和两个方法。
提示
不能将一个类分开定义到多个文件或多个 PHP 标记对中,下面的代码是错
误的。
<?php
class test {
?>
188 PHP 网络编程技术与实例
<?php
function test() {
print 'OK';
}
}
?>
提示
名称 stdClass 已经被Zend 使用并保留。不能在PHP 代码中定义名为stdClass
的类。函数名_sleep 和_wakeup 在PHP 类中是魔术函数。除非想要与之联系的
魔术功能,否则在任何类中都不能以此命名函数。PHP 将所有以_开头的函数名
保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在
PHP 中将函数名以_开头。
6.2.2 构造函数
有过类编程经验的读者一定知道,大多数的类都有构造函数。当一个类实例被调用时,
将调用构造函数,通常在构造函数中将执行一些初始化的操作。
在类中声明构造函数,同声明其他函数一样,只是构造函数的名称是固定的,即函数名
称必须为__construct()。这是在PHP 5.0 中新增加的特性,在以前的版本中,构造函数的名称
必须与类名相同。但是为了向下兼容,PHP 首先在类中搜索是否有__construct()函数,如果没
有,则继续搜索是否含有与类同名的函数。
构造函数虽然可以由编程者主动调用,但是大部分时候,都是在创建类对象实例的时候
自动调用。
声明构造函数的方法如下:
class classname
{
function __construct($param)
{
//代码
}
}
?>
构造函数可以传递参数,这些参数可以在调用类的时候传递。
6.2.3 析构函数
在PHP4.0 以前,并没有提供析构函数,可以使用register_shutdown_function()函数来模
拟多数析构函数的效果。析构函数是一种当对象被销毁时,无论使用了unset()或者简单的脱
离范围,都会被自动调用的函数。析构函数允许在销毁一个类之前操作或者完成一些功能。
在 PHP 中,与构造函数的名称类似,一个类的析构函数名称必须是_destruct()。
提示 析构函数不能带有任何参数。
6.2.4 类的实例化
在声明了一个类之后,如果要使用该类,必须创建该类的一个实例。实际上也可以将该
第6 章 PHP 与面向对象程序设计 189
类作为一个变量,在使用之前必须手动定义。定义该类实例,被称为创建一个实例或者实例
化一个类。在PHP 中,可以使用关键字“new”来创建一个类实例。
实例 6-1 创建一个简单的类
本实例创建了一个简单的类,然后创建了3 个该类的实例,如代码6-2 所示。
【代码 6-2】 firstclass.php
<?php
class myName
{
function __construct($myName) //构造函数
{
echo("我的名字是:$myName<br>");
}
}
//下面创建类实例
$name1=new myName("小狗");
$name2=new myName("小猫");
$name3=new myName("小马");
?>
执行结果如图6-4 所示。
图 6-4 类的构造函数
在以上代码中,“new myName("小狗")”中的参数“小狗”会被自动传递到构造函数,
然后构造函数直接使用该参数。
提示 construct 前面是两个连续下划线。


0 0
原创粉丝点击