《PHP动态网站设计(专)》项目五 购物车文件.pdf

上传人:奥****文 文档编号:2309603 上传时间:2024-06-11 格式:PDF 页数:50 大小:2.87MB
下载 相关 举报
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第1页
第1页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第2页
第2页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第3页
第3页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第4页
第4页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第5页
第5页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第6页
第6页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第7页
第7页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第8页
第8页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第9页
第9页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第10页
第10页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第11页
第11页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第12页
第12页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第13页
第13页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第14页
第14页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第15页
第15页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第16页
第16页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第17页
第17页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第18页
第18页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第19页
第19页 / 共50页
《PHP动态网站设计(专)》项目五 购物车文件.pdf_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、项目五购物车PHP动态网站开发项目教程项目目标购物车可以存储商品名称、价格和数量等信息,并且具有商品查看、添加和删除功能。本项目将实现购物车功能的编辑,实例输出结果如图5.1所示。图5.1 综合实例输出结果3相关知识项目实现内容导航认识面向对象编程定义和使用类类的继承常用类的操作4认识面向对象编程面向对象程序设计是20世纪80年代发展起来的一种程序设计方法,它通过对象模拟现实世界,利用抽象的方法来设计计算机软件。面向对象程序设计的3个主要特征为封装、继承和多态。下面分别进行介绍。封装:指将数据和处理数据的方法包含在一类。类实例化为对象。每一个对象都是该类的一个独立实体。对用户而言,类的内部是隐

2、藏的,只能通过公开的数据或者方法来操作对象。继承:指一个类传承了另一个类的全部特征,并具有自己的特征。通过继承得到的新的类可称为派生类或者子类,被继承者称为基类或者父类。多态:指对象的同一个动作在不同情况下可能产生不同的结果,PHP可通过方法重载来实现多态。5相关知识项目实现内容导航认识面向对象编程定义和使用类类的继承常用类的操作6定义和使用类在PHP中,对象的数据和方法对应类中的数据成员(也称属性成员)和方法成员。数据成员为变量,方法成员为函数。类的基本结构为属性列表为多个属性的声明,方法列表为多个方法的声明。通常,属性声明放在方法声明之前。从语法角度来看,属性声明和方法声明的先后顺序没有关

3、系。类可以没有任何成员,也可只有属性成员或方法成员。71简单类的定义和使用在使用类时应明确如何定义类、属性声明、方法声明、创建对象、使用属性和使用方法等操作,再根据该操作对类进一步熟悉。例5.1定义和使用简单类,代码如下。(源代码:chapter5test1.php)81简单类的定义和使用使用代码定义了person类,可发现它有一个私有属性$name、一个构造函数_construct()和一个公共方法getName()。public和private等关键字将在后面的内容中介绍。该例主要涉及的关键知识点包括:(1)构造函数与new关键字(2)$this关键字(3)对象变量(4)访问对象的方法和属

4、性92析构函数析构函数与构造函数的作用相反。当对象的所有引用被删除、对象被显式销毁、执行exit()结束脚本或者脚本执行结束时,析构函数会被调用。通常在析构函数中释放对象使用的资源或填写对象注销日志。将对象变量赋值为NULL,或用unset()函数删除变量,均可删除变量到对象的引用。例5.2使用析构函数,代码如下。(源代码:chapter5test2.php)102析构函数例5.2使用析构函数,代码如下。(源代码:chapter5test2.php)112析构函数例5.2代码在IE浏览器中的显示结果如图所示。提示:根据内存回收机制,PHP并不能保证析构函数的准确执行时间,所以应谨慎使用析构函数

5、。提示:如果没有为类定义构造函数和析构函数,PHP会自动生成一个默认的构造函数和析构函数。PHP“垃圾回收”机制可以自动回收没有使用的对象占用的内存。123public、protected和privatepublic(公有)、protected(受保护)和private(私有)关键字用于设置类成员的可访问性(也称可见性)。例如:133public、protected和private类的属性必须使用public、protected或private进行声明,在PHP 3和PHP 4中使用var声明属性。PHP 5仍保留了var,var声明的属性都是公有属性。类的方法在未声明可访问性时,默认为公有。

6、下面对该类函数分别进行介绍。public:公有成员,在类的内部和外部均可访问。外部访问格式为“$变量名-成员名”,内部访问格式为“$this-成员名”。公有成员可被继承,访问规则也适用。protected:保护成员,只能在类的内部通过“$this-成员名”访问。保护成员可被继承。private:私有成员,与保护成员类似,但私有成员可以被继承,但对子类而言,父类的私有成员是不可见的,只能通过父类的方法进行访问。144静态成员在类中可使用static关键字声明静态属性和静态方法,例如:静态成员相当于存储在类中的全局变量和全局函数,可在任何位置访问。静态成员和常规成员不同,静态成员属于类,而不属于类

7、的实例对象。154静态成员在类外部,静态成员使用“类名:静态成员名”格式来访问,例如:静态属性不能通过对象访问,静态方法可以通过对象访问,例如:在类的内部,使用“self:静态成员名”格式访问静态成员。注意,在静态方法内部,不能使用$this变量。165类的常量在类中可使用const关键字声明常量。类的常量与类的静态成员类似,常量属于类,而不属于类的实例变量。类的常量名区别大小写。在类外部用“类名:常量名”格式来访问,在内部用“self:常量名”格式访问,例如:17相关知识项目实现内容导航认识面向对象编程定义和使用类类的继承常用类的操作18类的继承继承是面向对象的一个重要特点。PHP使用ext

8、ends关键字实现继承,子类继承了父类的所有成员(私有成员不可见,但可通过方法访问)。其中,父类也可称为基类,子类也可称为扩展类或者派生类。例5.3使用类的继承,代码如下。(源代码:chapter5test3.php)19类的继承例5.3使用类的继承,代码如下。(源代码:chapter5test3.php)20类的继承从代码中可以看出,子类subtest虽然没有定义任何成员,但它继承了父类test的非私有成员。在创建子类的对象时,自动调用了继承自父类的构造函数。例5.3代码在IE浏览器中的显示结果如图所示。21类的继承1重载在子类中声明与父类同名的属性和方法称为重载。重载过后,在子类中可用“p

9、arent:父类成员名”格式来访问父类成员。例5.4使用类的重载,代码如下。(源代码:chapter5test4.php)221重载例5.4使用类的重载,代码如下。(源代码:chapter5test4.php)231重载例5.4使用类的重载,代码如下。(源代码:chapter5test4.php)241重载例5.4代码在IE浏览器中的显示结果如图所示。提示:如果不希望某个类被继承,可使用final关键字进行声明,例如,final class test。同样,final声明方法不允许被重载。例如:final public function setVar3($var3)252抽象类有时需要在类中声

10、明一些未实现的方法,让这些方法在子类中实现,这就需要使用到抽象方法和抽象类。PHP中使用abstract关键字声明抽象方法,抽象方法只有函数原型,不能有函数体。可在一个类中声明多个抽象方法,只要有一个方法是抽象方法,类就必须使用abstract关键字声明为抽象类。抽象类可以只包含抽象方法的类,也可以包含其他的属性和常规方法。声明抽象类的基本格式为不能创建抽象类的实例对象,否则会产生致命错误。262抽象类例5.5使用抽象类,代码如下。(源代码:chapter5test5.php)272抽象类例5.5代码在IE浏览器中的显示结果如图所示。283接口PHP不允许多重继承,即一个子类只能有一个父类。接

11、口提供了另一种选择,允许一个类实现(implements)多个接口。接口的声明方法与类相似,但接口只包含常量和函数原型,接口中的函数原型都必须用abstract声明为抽象方法。接口声明的基本格式为293接口例5.6使用接口,代码如下。(源代码:chapter5test6.php)提示:接口中的方法总是公有的抽象方法,可以用abstract public声明接口方法,但不能使用private或protected。提示:如果一个类实现了多个接口,则这些接口中不能有同名的属性或方法。303接口例5.6代码在IE浏览器中的显示结果如图所示。31相关知识项目实现内容导航认识面向对象编程定义和使用类类的继

12、承常用类的操作32常用类的操作PHP提供了一些内置的方法和函数,为类实现额外的功能。下面对常用类的操作进行介绍。1_toString()方法有时需要将对象转换为字符串,如使用echo或print输出,或者执行字符串运算等。在类中实现_toString()方法便可满足这些需求。例5.7为类添加_toString()方法,代码如下。(源代码:chapter5test7.php)331_toString()方法例5.6代码在IE浏览器中的显示结果如图所示。提示:若类中没有实现_toString()方法,试图将对象转换为字符串将产生致命错误。342_autoload()函数通常,自定义的函数、类是放置

13、在独立的文件中,使用时执行文件即可。如果忘记了包含类,创建类的对象则会出错。也可在脚本中实现_autoload()方法,加载需要的类。当使用未加载的类时,类名作为参数自动调用_autoload()方法,从而保证脚本继续执行。例5.8 为类添加_autoload()方法。(源代码:CDchapter5test8.php,test8_1.php,test8_inc.php)test8_1.php中定义了一个用于测试的简单类test8_1,代码如下。test8_inc.php中实现了_autoload()方法,加载需要的类,代码如下。352_autoload()函数test8.php为主文件,使用t

14、est8_1类创建对象,代码如下。例5.8代码在IE浏览器中的显示结果如图所示。363_set()、_get()和_call()方法在试图为类的不可访问属性赋值时会自动调用_set()方法,试图读取不可访问属性值时会自动调用_get()方法,在访问不可访问的方法时,会自动调用_call()方法。这里的“不可访问”指属性或方法属于非公有或者不存在。基于类的封装原则,非公有属性和方法都对外不可见。在类外部访问时会导致脚本出错,所以在类中使用私有属性定义对应的公有方法来设置和读取属性值。为大量的私有属性定义配套公有方法,增加了代码工作量,这时,就可使用_set()和_get()统一定义属性访问规则。

15、例5.9为类添加_set()、_get()和_call()方法,代码如下。(源代码:chapter5 test9.php)373_set()、_get()和_call()方法例5.9为类添加_set()、_get()和_call()方法,代码如下。(源代码:chapter5 test9.php)383_set()、_get()和_call()方法例5.9代码在IE浏览器中的显示结果如图所示。394_clone()方法在使用clone()函数复制(克隆)对象时,类的_clone()方法被调用。对象复制通常需要一个对象的副本,副本对象一经复制,就应与原对象没有关系。所以要使用对象复制功能,需通过_

16、clone()方法来实现。下面讲解在_clone()方法中复制对象数据,创建一个新的对象。例5.10使用对象复制,代码如下。(源代码:chapter5test10.php)404_clone()方法例5.10使用对象复制,代码如下。(源代码:chapter5test10.php)414_clone()方法例5.10使用对象复制,代码如下。(源代码:chapter5test10.php)例5.9代码在IE浏览器中的显示结果如图所示。42相关知识项目实现内容导航认识面向对象编程定义和使用类类的继承常用类的操作43项目实现为实现图5.1所示结果,可以做如下分析。(1)定义商品信息goods,为类声明3个私有属性name、price、quantity分别保存商品名称、价格和数量。使用_set()和_get()设置和读取3个私有属性。(2)定义购物车类shoppingcar,为类声明一个私有属性car用于保存商品对象数组。定义三个方法additem()、removeItem()和getItems(),分别实现添加商品、删除商品和读取购物车清单等功能。(3)创建购物车对象,测试购物车添加商品、删除

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育专区 > 计算机类

若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理!

copyright@2008-2024 兔兜文库 网站版权所有

鲁公网安备37072502000182号  ICP备案号:鲁ICP备2021021588号-1  百度保障