PHP面向对象编程(用星际快速入门).pdf

PHP面向对象编程(用星际快速入门).pdf

ID:51492839

大小:145.50 KB

页数:13页

时间:2020-03-25

PHP面向对象编程(用星际快速入门).pdf_第1页
PHP面向对象编程(用星际快速入门).pdf_第2页
PHP面向对象编程(用星际快速入门).pdf_第3页
PHP面向对象编程(用星际快速入门).pdf_第4页
PHP面向对象编程(用星际快速入门).pdf_第5页
资源描述:

《PHP面向对象编程(用星际快速入门).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用星际快速入门PHP面向对象编程面向对象博大精深,对于从未接触过得的人,会觉得一头雾水。学习的资料很多,但大多比较抽象,所以我用经典的游戏星际争霸来讨论PHP面向对象。现在假设我们来用 PHP 开发星际争霸,从而接触 PHP面向对象。注意,为了便于学习,除了特殊说明,否则各部分代码之间没有关联。而且同一件事情往往用的是不同的代码。另外我也不去考证各个兵种的属性数字,仅仅用来说明。一、类和对象如果玩家制造了一个机枪兵,那么我们怎么表示他呢,因为每个机枪兵有几个基本的数据要记录:剩余的血,杀敌数量,攻击力等等。我们可以用一个数组来记录一个机枪兵剩余的血和

2、杀敌数量,因为这对于每个机枪兵是独立的。但攻击力比较麻烦,因为经过升级,攻击力会增加,这就必须要找出所有表示机枪兵的数组,然后进行修改,非常麻烦。从这里我们可以看出一件事情,首先每个机枪兵有独立的数据需要记录和修改,比如剩余的血。同时他们有相同的数据需要共用,比如攻击力。这时候面向对象就能帮上我们的忙了。1.1、类的定义我们先来处理一部分问题,也就是每个机枪兵独有的数据。class marine{ public $blood = 50; //剩余的血public $kills = 0; //杀敌数量//这个函数(通常叫做方法)表示攻击敌人时候的运行代

3、码function attack($enemy){ //攻击敌人的代码} } 这叫做类,我们建立了一个表示所有机枪兵的类 marine,这里面保留了需要每个兵独有的数据,比如上面代码里的剩余的血。1.2、对象的创建和使用接下来我们来使用对象,也就是每个机枪兵:$m1 = newmarine(); 通过new 后面加一个类的名字和括号,我们新建了一个机枪兵$m1,$m1 被叫做类marine的对象,我们可以把它想象成一个特殊变量,只不过里面保存了多个数据。如果需要使用或者操作某个机枪兵的血(对象的属性),只要用$m1>blood来表示就可以了:echo

4、 $m1>blood;//输出机枪兵$m1 剩余的血我们再建立一个机枪兵$m2 = newmarine(); 如果此时$m1 被敌人攻击过了,还剩下 10 个血。而$m2 没受过攻击:echo $m1>blood;//结果是 10 echo $m2>blood;//结果是 50 使用对象可以很简单的保存每个机枪兵的血,不会互相影响。如果机枪兵$m1 攻击敌人的时候,可以这样使用对象的方法:$m1>attack($z1);//假设攻击的是某个小狗的对象$z1 不同的类内可以用同名的函数,比如小狗的类 Zergling里面也可以有一个函数 attack 

5、要注意的是,从 PHP5 开始,无论在哪里改变一个对象的属性,都能改变它。比如上面一个小狗对象被作为参数传入机枪兵的attack函数,执行函数之后这个小狗对象的血减少了,这和一般的函数不同。但这是很直观的,如果一个小狗被攻击了,它的血就应该减少。二、构造函数和析构函数每次我们新建一个机枪兵的时候,总人口应该加 1,如果一个机枪兵被杀,人口应该减少 1。可以通过构造函数和析构函数来自动处理:class marine{ //构造函数function __construct(){ //增加总人口的代码} //析构函数function __destruct(

6、){ //减少总人口的代码} } 在一个类中,名字为__construct 的函数叫做构造函数,每次new 新建一个类的对象的时候就会执行:$m1 = newmarine();//每次制造一个机枪兵时系统会调用类 marine的构造函数,自动增加总人口在一个类中,名字为__destruct 的函数叫做析构函数,每次销毁一个类的对象的时候就会执行:unset($m1);//unset 可以用于对象,表示销毁一个对象。每次一个机枪兵被杀时系统会调用类marine的析构函数,自动减少总人口三、静态机枪兵的攻击力是属于所有机枪兵对象,每个机枪兵的攻击力都是一

7、样的,如果升级,应该一起变化。这就用到 static,表示静态:class marine{ static $attackNumber = 10; //攻击力的数字//这个函数表示攻击敌人时候的运行代码function attack($enemy){ //攻击敌人的代码,$enemy>blood表示敌人对象的血属性$enemy>blood= self:attackNumber; } } 静态属性表示类所有的对象都共享的属性,一旦改变,所有的对象都跟着变化。静态属性用 static开头,比如上面的 static $attackNumber。静态属性可以用

8、类直接访问:echomarine:attackNumber;//显示 10 如果类以内的函数访问,用 sel

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。