zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP类的使用实例代码讲解

实例PHP代码 使用 讲解
2023-06-13 09:14:15 时间
PHP只有类别(class)、方法(method)、属性、以及单一继承(extensions)等。对不习惯使用C++、Java、Delphi等面向对象语言来开发程序的用户,不妨先阅读一下有关面向对象概念的书,相信可以带来许多的收获。
下面的范例是手推车?类。可以看到,使用class表示它是一个类类别。在类别中的function,例如add_item则表示该类的一个方法。方法可以封装类的实际处理情形,让该类自己能依封装好的方法来执行一些步骤。

程序中的$this类变量也和$GLOBALS及$php_errormsg两个变量一样,在PHP中属于特殊的变量。$this变量只用在类类别中,表示类的本身。
复制代码代码如下:

<?php
//程序名:cart.inc
classCart{
var$items;//手推车类

//本方法加入$num件物品到手推车中(加到$artnr变量)
functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
}

//本方法从手推车减少$num件物品(从$artnr变量减掉)
functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}else{
returnfalse;
}
}
}
?>


要使用手推车可以用类似下例的方式。可以先将每个类存成Include文件,再将它require或include进来。在定义变量$cart时,要使用new的保留字,表示$cart使用Cart类。使用->符号,表示执行类的方法。
复制代码代码如下:

<?php
require("cart.inc");
$cart=newCart;
$cart->add_item("10",1);
?>


之后再设计有记名的手推车。记名手推车从手推车遗传下来,因此手推车拥有的方法及属性,记名手推车也有,而记名手推车比手推车增加了名字的方法(或许该称属性较恰当)。

从下例中可以看到,子类Named_Cart使用extends来继承其父类Cart。虽然Named_Cart类中没有增加物品及减少物品的方法,不过由于遗传的特性,父类有的东西它都有。
复制代码代码如下:
<?php
//程序名:named_cart.inc
require("cart.inc");
classNamed_CartextendsCart{
var$owner;
functionset_owner($name){
$this->owner=$name;
}
}
?>


要使用记名手推车类,请看下面的范例。当然这不算太好的设计,每个子类都一直require它的父类,会造成服务器在I/O上面的负担。在实作时,可以将整个系列的类在同一个程序文件中,从最早的?先类到最后的子孙类,也方便日后修正。
复制代码代码如下:
<?php
require("named_cart.inc");
$ncart=newNamed_Cart;//建立类变量
$ncart->set_owner("CyberRidder");//配置类的记名属性
echo$ncart->owner;//显示类的记名属性
$ncart->add_item("10",1);//从父类遗传的方法也可使用
?>


因此,在PHP中使用了extends保留字,加上良好的系统分析与完整的CRC卡片(详见面向对象相关书籍)设计之后,PHP可变成拥有强大类能力的CGI语言。

PHP由于是脚本语言(Script),因此程序源代码可见,在软件工程中的元件黑箱并不会在目前的PHP版本中出现,也就是说,全部的类其实没有隐藏起它的内容。对于软件业者而言,没有办法保护所谓的软件IC,站在开放团体而言,反而有源代码是件好事,至于孰是孰非,就很难判定了,不过目前PHP还是OpenSource团体的一份子,或许日后Zend引擎可以做到类封装的功能也不一定。