《PHP程序设计》教案.docx
教师备课教案课程名称: PHP程序段计教学单位:工程科技学除教研室:计算机应用教研室运算符说明例如结果等于5 = 3false!=、<>不等于5 !=3true,恒等5 = 5true1= *不恒等5 != 5.0true>大于5 >3true>=大于等于5 >=3true<小于5 <3false<=小于等于5 <=3false在表中,注意=与二=的区别。当使用=比拟其两边的操作数时,先将两个操作数自动转 换为相同类型,然后两个操作数的值相等就返回true;而当使用=比拟其两边的操作数时,只有 当两个操作数的值相等并且类型相同,才会返回true。逻辑运算符逻辑运算符只能对布尔型数据进行运算,运算结果也为布尔型,具体如表所示。运算符说明例如结果&&与$a && $b$a与$b都为true,结果为true,否那么为falseII或$a | $b$a与$1)至少有一个为true,结果为true,否那么为falsei*非!$a$a 为 false,结果为 true; $a 为 true,结果为 falsexor异或$a xor $b$a与$6的值一个为true, 一个为false,结果为true,否那么为 falseand与$a and $b功能与&&相同,但优先级较低or或$a or $b功能与|相同,但优先级较低在表中,逻辑运算符虽然只能操作布尔型数据,但很少直接操作布尔型数据,通常都是使用比拟 运算符返回的结果作为逻辑运算符的操作数。此外,逻辑运算符也经常出现在条件语句和循环语句中。 组合比拟运算符该运算符也是PHP 7新增的运算符,其语法格式如下:表达式上述语句表示,当表达式1小于、等于或大于表达式2时,分别返回-1、0或1。位运算符位运算符是指对二进制位从低位到高位对齐后进行运算,具体如表所示。10运算符说明例如结果&按位与$a&$b$a与$6对应二进制的每一位进行与操作后的结果1按位或$a | $b$a与$6对应二进制的每一位进行或操作后的结果A按位异或$aA$b$a与$6对应二进制的每一位进行异或操作后的结果按位取反$a$a对应二进制的每一位进行非操作后的结果«向左移位$a « $b将$对应二进制的每一位左移$b位,右边移空的局部补0»向右移位$a » $b将$对应二进制的每一位右移$b位,左边移空的局部补0(五)表达式与语句表达式与语句表达式是用于计算值的操作,返回一个值,以下是常见的几种表达式:常量、变量,如3.14、$ao由运算符和操作数组成的式子,如$+、$a + 5 $a = func()o此处需注意每个表达式都有自己的值,即表达式都有运算结果。在表达式的后面加上一个分号就 是语句,因此通常使用分号来区分表达式与语句。PHP程序设计中流程控制结构包括顺序结构、选择结构和循环结构。它们都是通过控制语句实现 的,其中顺序结构不需要特殊的语句,选择结构需要通过条件语句实现,循环结构需要循环语句实现。 除此之外,有时程序需要无条件的执行一些操作,这时需要用到转移语句。条件语句条件语句可以给定一个判断条件,并在程序执行过程中判断该条件是否成立。程序根据判断结果 执行不同的操作,这样就改变代码的执行顺序,从而实现更多功能。例如,用户登录账户密码信息时, 假设帐号与密码都输入正确,那么显示登录成功界面,否那么显示登录失败界面。PHP中条件语句有if语句、if-else语句、if-elseif-else语句、switch语句。l.if语句if语句用于在程序中有条件地执行某些语句,其语法格式如下:if (条件表达式)语句块 /当条件表达式为真时,执行语句块)如果条件表达式的值为真,那么执行其后的语句块,否那么不执行该语句块。2.if-else 语句if-else语句用于根据条件表达式的值决定执行哪块代码,其语法格式如下:11if (条件表达式)语句块1/当条件表达式为true时,执行语句块1 else 语句块2/当条件表达式为false时,执行语句块2如果条件表达式的值为真,那么执行其后的语句块1,否那么执行语句块2。 3.if-elseif-else 语句生活中经常需进行多重判断,例如,考试成绩为90100分为优秀;成绩为8089分为良 好;成绩为6079分为及格;低于60分为不及格。在程序中,多重判断可以通过if-elseif-else语句实现,其语法格式如下:if (条件表达式1) 语句块1/当条件表达式1为true时,执行语句块1 elseif (条件表达式2) 语句块2/当条件表达式2为true时,执行语句块2) else 语句块n /当以上条件表达式均为fals时,执行语句块n )当执行该语句时,程序依次判断条件表达式的值,当出现某个表达式的值为true时,那么执行 其对应的语句,然后跳出if-elseif-else语句继续执行其后的代码。如果所有表达式均为false,那么 执行else后面的语句块no4.switch 语句switch语句用于根据表达式的值确定在几种不同值时执行不同的语句块,其语法格式如下:switch (含变量的表达式) case常量1:/当表达式的值与常量1相符时,执行语句块1语句块1; break; case常量2 :/当表达式的值与常量2相符时,执行语句块2语句块2; break; default:/当表达式的值与以上常量值都不相符时,执行语句块n语句块n; break; )12循环语句循环结构用于重复执行某一语句块,在PHP中提供了 3种形式的循环语句:while 循环语句、do-while循环语句和for循环语句。1. while循环语句在while循环语句中,当条件表达式为true时,程序就重复执行循环体语句 块,当条件表达式为false时,程序就结束循环,其语法格式如下:while (条件表达式)循环体语句块; /当条件表达式为true时执行)假设while循环的循环体只有一条语句,那么可以省略左右大括号。while的循 环体是否执行,取决于条件表达式是否为true,如下图。语句块2. do-while循环语句do-while循环语句是非零次循环结构,即至少执行一次循环体。执行 过程是先执行循环体结构,然后判断条件表达式。假设条件表达式为true,程序继 续执行循环体;假设条件表达式为false,程序终止循环。在日常生活中,并不难 找到do-while循环的影子。例如,在利用提款机提款前,会先进入输入密码的界 面,允许用户输入3次密码,如果3次都输入错误,银行卡将会被吞掉,其程序 的流程就是利用do-while循环设计而成的。do-while语句的语法格式如下:do 循环体语句块;/当条件表达式为true时再执行一次循环体语句 while (条件表达式);do-while语句与while语句有一个明显的区别:do-while语句的条件表达式后面必须有一个分 号,用来说明循环结束。3. for循环语句13for循环是最常见的循环结构,而且其语句更为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数不确定的情况,完全可以代替 while循环语句,其语法格式如下:for (表达式 1; 表达式 2; 表达式 3) 循环体语句;其中,表达式1常用于初始化循环变量;表达式2是循环条件表达式,当条 件为true时,程序执行循环体语句,当条件为false时,程序结束循环;表达式 3在每次执行循环体后执行,一般用于为循环变量增量。for循环的执行流程,如 图所示跳转语句 跳转语句使程序无条件跳转到另一位置,包括break、continue和goto语句。由 于这些语句是无条件跳转,因此常常与条件语句配合使用。1. break 语句break语句可以出现在switch结构和循环结构中,用于强制退出结构,转而执行该结构后面的语句。另外,break可以接收一个可选的数字来决定跳出几 层语句块。2. continue 语句continue语句可以出现在循环结构中,用于终止本次循环,转而执行下一次循环。3. goto语句程序使用got。语句可以跳转到指定位置去执行代码,并且只能从一个文件和 作用域中跳转(即无法跳出一个函数或者类方法)。goto语句经常用于跳出循环 语句或者switch语句,可以代替多层break语句。14三:PHP函数【教学目的与要求】1 .知识目标:要求学生掌握函数的基本用法、掌握变量的作用域、理解函数的高级用法2.能力 目标:要求学生掌握函数的基本用法、掌握变量的作用域、理解函数的高级用法【重点与难点】 重点:函数的基本用法、变量的作用域、函数的高级用法难点:函数的基本用法、变量的作用域、函数的高级用法【教学方法及手段】媒体演示法、案例教学法【教学时数】8课时【教学内容与教学过程】语句都是为了实现某个具体的功能。如果这个功能在整个应用中会经常使用,那么每一处需要该 功能的位置都写上同样的代码,必将会造成大量的冗余代码,不便于开发及后期维护。为此,PHP中 引入函数的概念,它就是为了解决一些常见问题而制作好的模型。(一)函数的基本语法> 函数的定义在PHP中,函数就是将重复使用的功能写在一个独立的代码块中,在需要时进行单独调用,其语 法格式如下:function函数名(参数名1=值1,参数名2=值2,) 函数体return 返回值;函数的语法格式说明如下:(1 "'function函数名(参数名1=值1,参数名2=值2,)”为函数头,由关键字function、 函数名和参数列表三局部组成。(2)函数名与变量命名规那么基本相同,但函数名不区分大小写。(3)函数体位于函数头之后,用花括号括起来,代表这是一个函数的功能区间。(4)用方括号口括起来的局部表示可选填,即参数列表与返回值是可选的,其他局部是必须存在 的。> 函数的调用当函数定义完成后,如果需要使用函数的功能,就需要调用函数。函数的调用十分简单,前面的 章节中屡次调用系统内置函数,调用自定义函数的方法与它类似,其语法格式如下:函数名(参数名=值口,参数名2=值2,.) 函数调用只需引用函数名并赋予正确的参数即可。> 函数的参数参数列表是由一系列参数组成,每个参数是一个表达式,用逗号隔开。在调用函数时,如果需要15向函数传递参数,那么被传入的参数称为实参,而函数定义时的参数称为形参,实参与形参需要按对应 顺序传递数据。参数传递的方式有按值传递、按引用传递和默认参数。1.按值传递按值传递就是将实参的值赋给对应的形参,在函数内部操作的是形参,因此操作的结果不会影响 到实参。(-)变量的作用域变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中 才可以被使用,这个作用范围称为变量的作用域。总体来说,变量根据定义的位置分为局部变量和全 局变量。A局部变量局部变量是在函数内部定义的变量,其作用域仅限于函数内部,离开该函数后再使用此变量是非 法的。另外,函数定义中的普通形参由于只能在本函数内部使用,因此也是局部变量。A全局变量全局变量是指在函数外部定义的变量,其作用域从变量定义处开始,到本程序文件末尾结束。此 处需注意,函数中的局部变量会屏蔽全局变量,因此在函数中无法直接访问全局变量。假设在函数中需要访问全局变量,可以使用global关键字修饰变量。此外,$GLOBALS数组也可以在函数中访问全局变量。它是一个包含了全局作用域中可用的全 部变量的数组,数组中的键就是变量名。»静态变量静态变量是一种特殊形式,它的特性是普通变量不具备的,下面介绍静态变量。局部变量从存储方式上可分为动态存储类型和静态存储类型。函数中的局部变量默认都是动 态存储类型,即在函数调用结束后自动释放存储空间。但有时希望在函数结束后,局部变量依然保存 在内存中,这时就需要使用static关键字。static修饰的变量称为静态变量,其存储方式为静态存储,即在第一次调用函数时该变量被初始 化,下次调用函数时该变量的值并不会消失。(三)函数的高级用法A可变函数一个变量的值可以为另一个变量的名称。此外,一个变量的值还可以是一个函数的名称,这就 是可变函数。该变量名后加上圆括号,就可以执行与其值同名的函数,因此可变函数也称为变量函数。»引用函数返回值引用不仅可以用于普通变量、函数参数,还可以用于函数的返回值,此时只需在函数名前添加& 符号。此处需注意,在调用函数时,引用函数返回值需要在函数名前添加&符号,用来说明返回的是 一个引用。161 <?phpfunction &test () /定义一个静态变量/ $b的值为1/ $b的值为2/ $b的值为3/ $b的值为62 static $b = 0;echo +$b.1<br>1;3 return $b;4 $a=test();$a=5;5 $a=test();$a=&test ();6 $a=5;$a=test();7 ?>A函数的嵌套调用PHP语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用。8 ?phpfunction output () / 输出信息9 echo,调用 output ()函数br,10 functiontest () echo,test ()函数开始br,11 output () ;/ 调用 output。函数echo' test ()函数结束131:'12 test ();13 ?A函数的递归调用在函数的嵌套调用中,一个函数除了可以调用其他函数外,还可以调用自身,这就是函数的 递归调用。递归必须要有结束条件,否那么会无限地递归。171 <?php/2 计算阶乘公式:3 0 ) = 1n! =n* (n-l)!z n>04 转化为递归函数:5 f(0) = 1f(n) =n * f(n - 1), n > 06 /function fact ($n) / 计算阶乘7 if ($n = 0)/ 结束条件return 1;8 return $n * fact($n - 1);)9 echo '4! = 1 .fact (4);?>回调函数在调用函数时,除了传递普通的变量作为参数外,还可以将另一个函数作为参数传递到调 用的函数中,这就是回调函数。假设要自定义一个回调函数,可以使用可变函数来实现,即在函 数定义时参数是一个普通变量,但在函数体中使用这个参数变量时加上圆括号,就可以调用和 这个参数值同名的函数。12345678910111213141516171819202122232425<?php function echo) functionecho )function echo) function echo)functionadd ($a, $b) /"$a + $b = ($asub ($a, $b) /"$a - $b= ($amul ($a, $b) /"$a * $b= ($adiv ($a, $b) /”$a / $b = n.($a?>计算加法+ $b).,<br>,;计算减法-$b).,<br>,;计算乘法* $b).!<br>!;计算除法/ $b).!<br>!;calculate ($a, $b, $operation) / 回调函数if (!is_callable($operation) echo,参数operation必须是函数名组成的字符串! <br>1; return false;)$operation ($a, $b);)calculate (3, calculate(3, calculate(3, calculate(3,2,2,2,2,'add');1 sub1;fmul');div');除了使用可变函数实现回调函数外,还可以使用can_user_func_array()函数来实现回调函18数。它是PHP中的内置函数,其语法格式如下:mixed call_user_func_array (callable ?callback, array $param_arr)其中,第一个参数表示需要调用的函数名,此处需要传递一个字符串;第二个参数是一个 数组类型的参数,表示调用函数的参数列表。四:数组【教学目的与要求】1 .知识目标:要求学生掌握数组的概念、掌握数组的定义、掌握数组的操作、熟悉数组的常用函数2,能力目标:要求学生掌握数组的概念、掌握数组的定义、掌握数组的操作、熟悉数组的常用函数【重点与难点】重点:数组的操作、数组的常用函数难点:数组的操作、数组的常用函数【教学方法及手段】媒体演示法、案例教学法【教学时数】8课时【教学内容与教学过程】(一)数组的概念与定义数组的概念假如要存储60名学生的成绩,如果使用变量来存储成绩,就需要定义60个变量,显然这个定义 的过程相当耗费时间与精力,PHP语言提供了数组来存储这60名学生的成绩。数组是一个可以存储一系列数值的数据结构。数组中的每个元素分为两局部:键(key)和值 (value),其中键(也称为数组的下标)为元素的识别名称,值为元素的内容。键与值存在着一种对 应关系,例如上述每名学生的学号就可以用数组的键表示,成绩就是键所对应的值。在PHP中,根据键的数据类型,数组分为索引数组与关联数组,具体如下所示。1 .索引数组所谓索引数组就是键为整数的数组,其键默认从0开始并依次递增1。它通常使用在用位置来索 引数组元素的值,具体如下图。19一:PHP概述与定义【教学目的与要求】1 .知识目标:要求学生了解PHP语言的优势、2 .能力目标:使学生掌握PHP开发环境搭建【重点与难点】重点:PHP开发环境搭建难点:PHP程序开发流程【教学方法及手段】媒体演示法、案例教学法【教学时数】4课时【教学内容与教学过程】> 认识PHPPHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一个简单程序。这个程序用 来显示Rasmus Lerdorf的个人履历以及统计网页流量,因此最初称为个人主页(Personal Home Page)。 后来受到GNU的影响,它更名为PHP(Hypertext Preprocessor,超文本预处理器)。PHP是全球网站使用最多的脚本语言之一,从最初的PHP/FI到现在的PHP7,经过屡次的重写和 扩展,与Linux、Apache和MySQL共同组成了一个强大的Web应用程序平台(简称LAMP)。PHP作为服务器端Web程序开发语言,主要有以下两方面原因: PHP是一种服务器端、HTML嵌入式的脚本语言,因此适合Web开发。 PHP是B/S (Browser/Server,浏览器/服务器)架构,即服务器启动后,用户可以不使用客户 端软件,而是使用浏览器进行访问,这种方式既保持了图形化的用户界面,又大大减少了应 用程序的维护量。> PHP语言优势PHP之所以成为目前最流行的服务器端Web程序开发语言之一,是因为它具有很多优势,具体如 下所示。1 .跨平台PHP几乎支持所有的操作系统平台,如Windows、UNIX、Linux等。此外,还支持多种Web服 务器,如Apache、Ils等2 .开源免费PHP是开源且免费,此外,LAMP平台中的Linux、Apache> MySQL都是免费软件,这可以为网 站开发者节省一局部开支。3 .面向对象PHP支持面向对象程序设计,因此可以用来开发大型商业程序。另外,PHP也支持面向过程程序 设计。4 .支持多种数据库PHP支持多种数据库,如MySQL、Oracle> SQLServer等,其中MySQL是网站开发首选的数据键(key) 01234值(value) 6875899880在图中,索引数组中的键都为整数,值可以为任意数据类型,每个键都有对应的值。另外,键可 以为指定整数,如果不指定,那么默认从0开始。2.关联数组所谓关联数组是指键为字符串的数组,通常使用在存储一系列具有逻辑关系的数据,具体如图所zj O键(key) 'id' 'name' 'age'* score'值(value)68 小千, 18100在图中,数组中每个元素的键与值之间存在着逻辑关系,例如,学生学号(id)为68,姓名(name) 为小千,年龄(age)为18,分数(score)为100。数组的定义对数组的概念有所了解后,接下来就需要定义数组,通常有两种方式:一种是直接为数组元素赋 值,另一种是使用array语句。(二)数组的操作A数组输出var_dump()函数可以输出数组中每个元素与值的数据类型。此外,print。函数也可以输出数组 中所有元素。如果只需要输出数组中某个元素的值,那么可以通过键来获取对应的值。因为键是数组元素的唯 一标识,而键与值之间是映射关系,具体语法格式如下:$数组名键例如,获取$arr2中,id所对应的值,可以写成如下形式:除了可以使用口外,还可以使用,具体如下所示:$arr21 id1»数组删除unset语句可以删除整个数组,也可以删除数组的某个元素。»数组运算运算是通过运算符和数据实现的。数组作为一种复合数据类型,自然也可以进 行运算,具体如表所示。20运算符说明例如+联合$arrl + $arr2=相等$arrl = $arr2全等$arrl = $arr21= 不等$arrl != $arr2<>不等$arrl <> $arr2)=*不全等$arrl != $arr2A数组遍历数组遍历是指依次访问数组中的每个元素,可以通过多种方法实现,具体如下 所示。1 .通过foreach语句遍历数组在PHP中,foreach语句可以很方便地遍历数组,其语法格式如下:foreach ($variable as $key => $value) 循环体其中,$variable表示需要遍历的数组,as是一个固定的关键字,键变量 $key是可选的,值变量$血1110是必选的。每次循环日寸,foreach语句会把键赋 值给$key,值赋值给$丫1110。此处需注意,$1丫和$丫翻此保存的键与值是通过值传递的方式赋值的。如 果使用引用传递,只需在值变量前加上&即可,键变量是不能写成引用形式。2 .通过list语句和each()函数遍历数组除了 foreach语句可以实现遍历数组外,list语句与each()函数结 合起来也可以实现遍历数组。首先讲解list语句,其语法格式如下:array list(mixed $varnamer mixed $.) list语句将索引数组键为0的值赋值给$varname,后面依次类推。注意list语句中第一个变量对应的是键为0的值,依此类推。each。函数接收一个数组,并将数组中的一个元素拆分为一个新数组,然后移 向下一个元素。如果移动到超出数组范围,此时执行each。函数,那么函数返回 false。3 .通过数组指针遍历数组数组指针指向数组中的某个元素,默认指向数组中第一个元素。通过移动 或改变指针的位置,就可以访问数组中的任意元素。PHP中提供了一些数组指 针函数,用于操作数组指针,如表所示。函数说明mixed cuiTent(array &$array)获取当前数组指针指向元素的值mixed key(array &$array)获取当前数组指针指向元素的键mixed prev(array &Sarray)将当前数组指针倒回一位mixed next(array &Sarray)将当前数组指针向前移动一位mixed end(array &$array)将数组指针指向最后一个元素mixed reset(array &$array)将数组指针指向第一个元素21在表中,数组指针函数的参数都为需要操作的数组。通过这些函数可以移动数组指针, 从而访问数组中的元素。(三)数组的常用函数A计算元素个数count。函数可以统计数组中元素的个数,其语法格式如下:int count(mixed $var, int $mode = 0)其中,$var指定需要计算的数组;$mode为可选参数,其值为0或1 (默 认为0)。如果将$mode设置为1,那么该函数会递归计算多维数组中每个元素的 个数。A压入或弹出元素在编写程序时,有时需要在数组首尾压入或弹出元素,这时就可以使用下 列函数进行操作,如表所示。函数说明mixed array_shift(array &$array)弹出数组中第一个元素mixed array_pop(array &$array)弹出数组中末尾的元素int array_unshift(array &$array, mixed $var , mixed $.)在数组的开始处压入元素int array_push(array &$array, mixed $var, mixed $.)在数组的末尾压入元素A移除重复值在数组中,元素的键都是唯一的,但值有可能相同。array_unique()函数可以移除数组中重 复的值,其语法格式如下:array array_unique(array $array, int $sort_flags = SORT_STRING)其中,$array为需要操作的数组;$sort_flags规定排序类型,默认 把每一项作为字符串来处理。»数组排序在日常生活中经常需要用到排序,如商品按价格排序、学生成绩排序。排序通过调整位置, 把杂乱无章的数据变成有序数据。sort。函数可以对数组中元素值进行排序,其语法格式如下:bool sort(array &$array, int $sort_flags = SORT_REGULAR)其中,$array表示需要排序的数组;$sort_flags为可选参数,其取值可 以改变排序的行为。取值说明SORT_REGULAR正常排序元素值(不改变类型)SORT_NUMERIC元素值被作为数字来排序SORT_STRING元素值被作为字符串来排序SORT_LOCALE_STRING根据当前的区域设置来把元素值当作字符串排序另外,rsort()函数可以将数组中元素值按从大到小进行排序,其用法与 sort。函数的用法类似。asort ()函数在排序时数组中元素值对应的键将不会发生变化。22A合并数组AarrayjnergeO函数可以将两个或多个数组合并成一个数组,其语法格式如下:array array_mrg(array $arraylr array $.)其中,参数列表中的参数表示需要合并的数组,返回值为合并后的数组。如果传入的数组中有 相同的字符串键名,那么该键名后面的值将覆盖前一个值。如果传入的数组中有相同的数字键名,那么后 面的值将不会覆盖前一个值,而是附加到前一个值的后面。如果传入一个索引数组,那么键名会以连续 方式重新索引。»拆分数组array_chunk()函数可以将一个数组拆分成多个数组,其语法格式如下:array array_chunk(array $inputz int $size, bool $preserve_keys = false)其中,$input表示需要拆分的数组;$size表示拆分后每个数组的元素个数;$preserve_keys为 false,表示拆分后的数组中元素的键从0开始依次往后;$preserve_keys为true,表示拆分后的数组中 元素保存原来的键名。A反转数组arrayeverse()函数可以将一个数组中元素反转,其语法格式如下:array array_reverse(array $arrayA bool $preserve_keys = false)其中,$array表示需要反转的数组;$preserve_keys为false,表示不会保存数字的键;$preserve_keys 为true,表示会保存数字的键。此处需注意,非数字的键不受$preserve_keys值的影响,总是会被保存。五:面向对象【教学目的与要求】1 .知识目标:求学生理解面向对象的概念、掌握类与对象、掌握构造方法与析构方法、掌握 类常量与静态成员、掌握继承性与多态性、掌握抽象类与接口2 .能力目标:求学生理解面向对象的概念、掌握类与对象、掌握构造方法与析构方法、掌握 类常量与静态成员、掌握继承性与多态性、掌握抽象类与接口【重点与难点】重点:类与对象、构造方法、析构方法、类常量、静态成员、继承、抽象类与接口、多态难点:继承、抽象类与接口【教学方法及手段】媒体演示法、案例教学法【教学时数】8课时【教学内容与教学过程】23(一)对象与类的概念在现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如学生、汽车等。人类 解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些局部组成的。通常都会 将对象划分为两个局部,即静态局部与动态局部。顾名思义,静态局部就是不能动的局部,这个局部 被称为“属性”,任何对象都会具备其自身属性,如一个人,其属性包括高矮、胖瘦、年龄、性别等。 然而具有这些属性的人会执行哪些动作也是一个值得探讨的局部,这个人可以转身、微笑、说话、奔 跑,这些是这个人具备的行为(动态局部),人类通过探讨对象的属性和观察对象的行为来了解对象。在计算机世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象 为对象,然后考虑这个对象具备的属性和行为。例如,现在面临一名足球运发动想要将球射进对方球 门这个实际问题,试着以面向对象的思想来解决这一实际问题。步骤如下。首先可以从这一问题中抽象出对象,这里抽象出的对象为一名足球运发动。然后识别这个对象的属性。对象具备的属性都是静态属性,如足球运发动有一个鼻子、两条腿、 一双手等接着识别这个对象的动态行为,即足球运发动的动作,如跳跃、转球等,这些行为都是这个对象 基于其属性而具有的动作。由此可见,类实质上就是封装对象属性和行为的载体,而对象那么是类抽象出来的一个实例。这 也是进行面向对象程序设计的核心思想,即把具体事物的共同特征抽象成实体概念,有了这些抽象出 来的实体概念,就可以在编程语言的支持下创立类,因此,类是那些实体的一种模型,具体如下图。实体概念> 类具体事物4 对象在图中,通过面向对象程序设计的思想可以建立现实世界中具体事物、实体概念与编程语言中 类、对象之间的一一对应关系。A面向对象的三大特征面向对象程序设计实际上就是对现实世界的对象进行建模操作。面向对象程序设计的特征主要 可以概括为封装、继承和多态。1 .封装封装是面向对象程序设计的核心思想。它是指将对象的属性和行为封装起来,其载体就是类, 类通常对客户隐藏其实现细节,这就是封装的思想。例如,计算机的主机是由内存条、硬盘、风扇等 部件组成,生产厂家把这些部件用一个外壳封装起来组成主机,用户在使用该主机时,无须关心其内 部的组成及工作原理。2 .继承继承是面向对象程序设计提高重用性的重要措施。它表达了特殊类与一般类之间的关系,当特 殊类包含了一般类的所有属性和行为,并且特殊类还可以有自己的属性和行为时,称作特殊类继承了 一般类。一般类又称为父类或基类,特殊类又称为子类或派生类。例如,已经描述了汽车模型这个类 的属性和行为,如果需要描述一个小轿车类,只需让小轿车类继承汽车模型类,然后再描述小轿车类 特有的属性和行为,而不必再重复描述一些在汽车模型类中已有的属性和行为。3 .多态24多态是面向对象程序设计的重要特征。生活中也常存在多态,例如,学校的下课铃声响了,这 时有学生去买零食、有学生去打球、有学生在聊天。不同的人对同一事件产生了不同的行为,这就是 多态在日常生活中的表现。程序中的多态是指一种行为对应着多种不同的实现。综上,面向对象的程序设计就是通过建立一些类以及它们之间的关系来解决问题。编程者要根 据对象间的关系,建立类的体系,明确它们之间是构成关系还是类属关系,从而确定类之间是包含还 是继承。面向对象程序设计的一个很大特点是支持代码的重用,这就要求可重用的类一定要抓住不同 实体间的共性特征。当类的定义初步完成后,编程者就可以根据现实事物中对象的行为、对象之间的 协作关系对具体工作细化模块,并对这些对象进行有机组装,也就是利用对象进行模块化编程。(二)类与对象A定义类在PHP中把具有相同属性和行为的对象看成同一类,把属于某个类的实例称为某个类的对象。例 如学生张三与李四是两个不同的对象,两者有共同的属性(如学号、成绩等),也有相同的行为(如选 课、显示成绩等),因此两者同属于学生类。在类中,属性是通过成员变量实现的,而行为是通过成员函数(又称为方法)实现的。定义类的 语法格式如下:class类名成员变量;成员方法;)类是通过class关键字加类名来定义的,两个大括号之间的局部就是类体内容。成员变量就是类中的变量,主要用于保存数据信息。定义成员变量的语法格式如下关键字成员变量名其中,关键字可以为public、private> protected> static中的任意一个。 类中的函数被称为成员方法,其语法格式如下:关键字函数定义其中,关键字可以为public、private> protected> static> final中的任意一个(默认为 publilc)o注意函数与成员方法的区别:函数实现某个独立的功能,而成员方法实现类的一个行为。 另外,在定义类时,一对大括号之间的局部需要在一个"V?php?>"标签中,不能分开书写。 A创立对象类是对象的抽象,对