zoukankan      html  css  js  c++  java
  • 170321php3第4章 PHP5的基本语法+作业九九乘法表

    第4章 PHP5的基本语法

    4.1 PHP语法概述

    4.2 PHP的常量和变量

    4.3  PHP的运算符和表达式 

    4.4 PHP的流程控制  

    4.5 PHP的系统函数与自定义函数

    4.6 PHP5的类与对象

    案例四

    本章小结

    4.1 PHP语法概述

    回到目录

     4.1.2 PHP嵌入HTML的方式

    1、利用分界符“<?php”和“?>” 这是PHP最为普通的嵌入方式强烈建议使用此方式,这种写法可以为你的程序在跨平台使用时减少不必要的麻烦!

    2、利用分界符“<?”和“ ?>” 这种方式是简写方式,必需在php.ini文件中将shor_open_tag设置为On(PHP5中默认设置为On),否则编译器将不予解析。

    3、利用分界符“<script language="php">”和 “</script>” 这是类似于JavaScript和VBScript风格的嵌入方式

    4、利用分界符“<%”和“%>” 这是一种具有ASP风格的嵌入方式,必须在“php.ini”文件中设置asp_tags为On,否则编译器将不予解析。 强烈建议少用这种方法,因当 PHP 与 ASP 源代码混在一起时就麻烦喽! 

      友情提示:其实,在编写 PHP 程序最好的方法,是先处理好纯 HTML 格式的文件之后,再将需要变量或其它处理的地方改成 PHP 程序。这种方法,可以让您在开发上达到事半功倍的效果。

    4.1.3 PHP程序的注释方法

      在 PHP 的程序中,加入注释的方法很灵活。可以使用 C 语言、C++ 语言或者是 UNIX 的 Shell 语言的注释方式,而且也可以混合使用。

    具体方法如下:
    1、“//” :这是从C++语法中借鉴来的,该符号只能注释一行。
    2、“/*”和“*/” :这是C语言的注释符,符号之间的都将被注释掉。
    3、“#” :这是UNIX 的 Shell 语言风格的注释符,也只能注释一行。


    4.1.4 PHP的文件引用

      引用文件的方法有两种:require 及 include。两种方式提供不同的使用弹性。

      require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

      include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

    4.2 PHP的常量和变量

    回到目录

    4.2.1 PHP的常量类型
      PHP的常量包含两种:一种是系统预定义常量,另一种是自定义常量。
      PHP中预定了很多系统常量,这些系统常量可以很好地帮助我们了解系统当前的情况,而且这些常量可以随时调用。具体列举如下:

    1、__FILE__
      这个默认常量是 PHP 程序文件名。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名。
    2、__LINE__
      这个默认常量是 PHP 程序行数。若引用文件 (include 或 require)则在引用文件内的该常量为引用文件的行,而不是引用它的文件行。
    3、PHP_VERSION
      这个内建常量是 PHP 程序的版本,如 '3.0.8-dev'。
    4、PHP_OS
      这个内建常量指执行 PHP 解析器的操作系统名称,如 'Linux'。
    5、TRUE
      这个常量就是真值 (true)。

    6、FALSE
      这个常量就是伪值 (false)。
    7、E_ERROR
      这个常量指到最近的错误处。
    8、E_WARNING
      这个常量指到最近的警告处。
    9、E_PARSE
      本常式为解析语法有潜在问题处。
    10、E_NOTICE
      这个常式为发生不寻常但不一定是错误处。例如存取一个不存在的变量。
      这些 E_ 开头形式的常量,可以参考 error_reporting() 函数,有更多的相关说明。

      当然我们在实际编写程序时,仅使用以上的系统预定义常量是不够用。define() 的功能可以让我们自行定义所需要的常量。


    4.2.2 PHP的变量类型
    PHP中预先定义了很多变量,我们可以随时在脚本中引用。PHP的预定义变量将在后面的章节和附录中涉及到。我们下面主要讲解自定义变量。
    PHP 的变量类型不多,有以下五种:
      ①string :字符串
      ②integer :整型
      ③double (floating point number):双精度型(浮点型)
      ④boolean : 布尔型
      ⑤array :数组
      ⑥object :对象

    PHP的变量属于松散的数据类型,具体使用时应注意以下几点:
      ①变量名要以“$”开头,且区分大小写;
      ②变量不必要预先定义或声明;
      ③变量在使用时编译器可动态进行类型指定和转换;
      ④变量如果未赋值而直接使用,变量值将被视为空;
      友情提示:最好使用相同的变量命名风格,以免在团队合作或自己查找错误的时候因变量大小的问题,浪费许多无谓的时间,那就得不偿失了。变量之间若要转换类型,当然是很自由的,但浮点数转成整数就有点牵强了,不过可以将浮点数转成字符串,也是很好处理的。


    1、字符串(string)
      无论是单一字符或数千字的字符串都是使用这个变量类型。值得注意的是要指定字符串给字符串变量时,要在头尾都加上双引号或单引号 (例如: “这是字符串”或’这是字符串’)。而且在PHP中也提供一些转移字符,用以辅助那些已经被程序语法结构占用了的特殊字符,其列表如下:

      友情提示:以上的转义字符PHP中'和"是不一样的,而且也可能无效,在使用时一定要测试通过了之后再用哦!再比如若“ ”换行无效,你可以使用“<br>”来换行。


    2、整型(integer):
    在 32 位的操作系统中,它的有效范围是 -2,147,483,648 到 +2,147,483,647。要使用 8 进位整数可以在面加 0(零),要使用 16 进位整数可以在面加 0x。如:
      ①$int1=1234 //十进制正整数
      ②$int1=-1234 //负整数
      ③$int1=01234 //八进制整数
      ④$int1=0x1234 //十六进制整数


    3、双精度型(浮点型)(double (floating point number))
    在 32 位的操作系统中,它的有效范围是 1.7E-308 到 1.7E+308。如:
      ①$float1=666.66
      ②$float2=6.6666e2 //表示6.6666乘以10的2次方,为指数形式的浮点数
      应当注意的是,浮点型变量显示所用的十进制数的个数由php.ini文件中的precision定义,预定值为12,即浮点数的最长为14个数字。

    4、布尔型(boolean)
      布尔型也就是逻辑型,其值非真即假,只要用于条件表达式和逻辑表达式中,用以控制程序流程。这种类型是从PHP4种才开始存在的。通常 1 即为 true,0 为 false。
    要明示地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制需要一个 boolean 参数时,该值会被自动转换。

    5、数组(array)
      数组变量可以是一维、二维或者更多维数组,其中的元素也很自由,可以是字符串、整型、浮点型、布尔型,甚至是数组或则对象。PHP还同时支持以数字为下标的索引数组(scalar array)和以字符串为下标的关联数组(associative array),这二者虽没有任何区别,但也算得上是PHP比别的语言特别的地方之一吧!在PHP中可以使用list()函数或者array()函数来创建数组,也可以直接进行赋值。

      PHP中多维数组与一维数组的区别在于多维数组有两个或多个下标,他们的用法基本上是一样的。下面的例子就是采用逐一给二维数组元素赋值的方法来创建和使用二维数组的。

    6、对象(object)
      object 为对象类型变量,目前在 PHP 中的默认类并不是太多,不过相信有了大家的努力一定会丰富起来的。

    4.3  PHP的运算符和表达式 

    回到目录

    4.3.1 PHP的运算符
    PHP的运算符大部分是从C语言中借用而来的,共分以下几类:
      算术运算符:+、-、*、/、%、++、--
      字符串运算符:.
      赋值运算符:=、+=、-=、*=、/=、%=、.=
      位运算符:& 、| 、^ 、<< 、>> 、~
      逻辑运算符:&& (And) 、|| (Or) 、xor (Xor) 、! (Not)
      比较运算符:< 、> 、<= 、>= 、== 、===、!=
      其他运算符:$、& 、@ 、-> 、=>、? :

    1、算术运算符号
      就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号.

      友情提示:PHP中的除法运算得到的结果是整数就是整数,是实数就是实数。PHP中的求模运算会对两操作数自动取整。另外,在PHP中字符也可以进行自增运算,这样是不是就可做成选择题的a、b、c、d选项序号呢?

    2、字符串运算符
      字符串运算符号只有一个,就是英文的句号“.”。它可以将字符串连接起来,变成合并的新字符串,也可以将字符串与数字连接,这时类型会自动转换,

    3、赋值运算符

     

    4、位运算符
    PHP中的位运算符有6个,常用于二进制的运算场合,其具体含义如下:

    其中“~”是单目运算符,其他的都是双目运算符。与、或、异或和取反的运算规则如下:

    0&0=0 0&1=0 1&0=0 1&1=1 (与:有假就假,都真才真)
    0|0=0 0|1=1 1|0=1 1|1=1 (或:有真就真,都假才假)
    0^0=0 0^1=1 1^0=1 1^1=0 (异或:相等为假,不等为真)
    ~0=1 ~1=0
    友情提示:在对十进制进行位运算时要先转为二进制,然后按上述规则进行计算。

    5、逻辑运算符
      逻辑运算通常用来测试真假值。逻辑运算经常用在条件判断和循环处理中,用来判断条件是否满足和是否该离开循环或继续执行循环。逻辑运算符的具体含义如下:

    6、比较运算符
      比较运算符和逻辑运算的用法差不多,通过比较大小来测试真假值,经常用在条件判断和循环处理中,用来判断条件是否满足和是否该离开循环或继续执行循环。比较运算符的  具体含义如下:

    友情提示:“===”为PHP 4 中新增的比较运算符,用于类型判等。例如:”3”===3将判为假。其他的比较运算符和C语言的基本一致,这儿就不再多说了。

    7、其他运算符:
      其中比较特殊的是三目运算符“ ? : ”,例如: (expr1) ? (expr2) : (expr3); 表示如果expr1的运算结果为true,则执行expr2;否则执行expr3。实际上它有点类以 if...else 循环,但可以让程序较精简有效率。

      此外,还有用于新对象的定义符new、用于数组下标引用的方括号“[]”、表示结合性的大括号“{}”等。
    友情提示:PHP中的运算符是十分丰富的,而且使用起来也很灵活,希望大家多多上机实践练习哦!

    8、运算符优先级与结合性

     

    4.3.2 PHP的表达式
      表达式,就是由操作数、操作符以及括号等所组成的合法序列。简单地说,PHP中的常量或变量通过运算符连接后就形成了表达式,例如“$a=1”为一个表达式。表达式也有值,如上面的这个表达式的值就是1。
      根据表达式中运算符类型的不同我们又可以把表达式分成:算术表达式、字符串连接表达式、赋值表达式、位运算表达式、逻辑表达式、比较表达式、其他表达式等。
      最常见的表达式是比较表达式和逻辑表达式,这种表达式的值只能是真或假,在下面一节的流程控制中,会大量使用这两种表达式。
    友情提示:“$a=1”为表达式,“$a=1;”则为一条语句。一定要分清楚哦!

      在任何一种编程语言中,所有的程序都由3种基本的结构组成,即:顺序结构、分支结构、循环结构。
      程序是由若干的语句组成的,如果在程序中的语句的执行顺序是从上到下依次逐句执行的,那么这个程序的结构就是顺序结构,在这种结构中没有分支和反复,这也是最简单、最常见的流程结构,我们这里就不再多讨论。

    PHP中提供了4条流程控制语句来实现分支结构和循环结构,即:
      ①if……else…… 条件语句
      ②switch 分支选择语句
      ③do……while…… 循环语句
      ④for 循环语句
    此外PHP还提供了break语句和continue语句,用以跳出分支结构或循环结构,下面我们就将这些语句逐一进行详细的介绍。

    4.4 PHP的流程控制回到目录
    4.4.1 if……else……语句
      if……else……语句共有三种基本结构,此外每种基本结构还可以嵌套另外两种结构,而且嵌套的层次也可以不止是一层。
    1、只有if的语句

    2、if……else……语句

    3、else if语句
    前面的两种分支结构只能实现二路分支,用包含else if的语句则可以实现多路分支,其语法如下:

    if (expr1) {
    statement1
    } 
    else if(expr2) {
    statement2
    }
    else if ……
    else {
    statementn
    }

    在上述3种基本结构中,如果在statement语句体中还有if……else……语句,就构成嵌套的if……else……语句。

    友情提示:在使用嵌套的if……else……语句时,一定要注意else和if的匹配、{和}的匹配。只有else语句没有if的语句是不存在的。

    4.4.2 switch语句

    嵌套的if……else……语句可以处理多分支流程情况,但使用起来比较繁琐而且分析也不太清晰,为此PHP中又引进了switch语句。其语法如下

    switch (expr) {
        case expr1:statement1;
                break;
        case expr2: statement2;
                break;
        default:
        statementN;
        break;
    }    

    其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。一定要注意break为跳离循环,千万不能省略不写。
    友情提示:在设计switch语句时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。

    4.4.3 do……while……语句
    在PHP中,do……while……循环语句有两种结构,一种只有while……部分,另一种是do……while……两部分都有。
      1、只有while……部分的语句
    其语法如下

    while (expr) {
    statement
    } 

    2、do……while……两部分都有的语句

    其语法如下:

    do {
    statement
    } while (expr);

      其中的 expr 为判断的条件,通常都是用逻辑表达式或比较表达式充当判断的条件。而statement为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

      二者的区别在于:前者是先判断再执行,后者是先执行再判断。对于expr开始为真的情况,而且是没有区别的。如果expr开始为假,则前者不执行任何语句就跳出循环,而后者仍要执行一次循环才能跳出循环。

    4.4.4 for语句
    For语句仅有单纯的一种,没有其他变化,但同时他也是最复杂,功能最强大得循环,任何while循环和do……while……循环都可以用for循环代替,其语法如下:

    for (expr1; expr2; expr3) {
    statement
    }

      其中expr1为条件的初始值,expr2为判断的条件,通常都是用比较表达式或逻辑表达式充当判断的条件,expr3为执行statement后要执行的部份,即循环步长,用来改变条件,供下次的循环判断,如加1、减1等等。而 statement 为符合条件后执行的语句或语句体,若statement只有一条语句组成,则可以省略大括号 {}。


    4.4.5 break和continue语句
      我们在switch和for语句的举例中都用到了break语句,他的作用就是跳出整个的switch或for语句体,执行其外的下面的语句。而continue经常用在for或do……while……循环语句中,表示跳出本次循环,继续进入下一次的循环。

    4.5 PHP的系统函数与自定义函数 回到目录
      在程序的编写过程中往往会有一些要反复用到的功能某块,如果每次都要重复编写这些代码,不仅浪费时间,而且还会使程序变得冗长、可读性差,维护起来也很不方便,此时我们就想到了函数。PHP 5允许程序设计者将常用的流程或者变量等元件,组织成一个固定的格式。也就是说用户可以自行组合函数或者是类。这样在编写好函数或则类之后,我们在使用时就不必关心其中的细节,拿过来就可以用;要做功能修改时,只需修改函数中的内容,所有对此函数的调用都会发生相应的变化,不必一个一个地去改动。此外,使用函数还能减少对系统资源的耗用,因为每一次函数调用结束后,都会释放掉它所占用的资源。PHP 5 中的函数有可以分为系统函数和自定义函数,系统函数在后面的章节和附录中都将涉及到,本节主要讲解自定义函数。

    4.5.1 函数的定义和调用
    PHP 5中的函数C语言一样。函数定义的语法为:

    function 函数名(形式参数列表) {
    函数体;
    return 返回值;
    }

      PHP 5中的函数有无返回值都允许。而且,在函数的名称上,PHP 对于大小写的管制比较松散。可以在定义函数时写成大写的名字,而在使用时使用小写的名字。总之,对函数而言,不用管大小写,只要注意名称没有重复就可以了。不过,PHP 5 对用户自定义函数名也是有一些要求的,具体如下:
      ①不能与PHP的内部函数同名
      ②不能与PHP的关键字重名
      ③不能以数字或下划线开头
      ④不能包含点号“.”和中文字符
      函数体是实现函数功能的语句体,与for循环等不一样,函数体中即使只有一条语句,外面的大括号也不能省略。

    4.5.2 函数的参数传递
      在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会传递给相应的形式参数,然后在函数中实现对数据的处理和返回。
      在由实际参数向形式参数传递的过程中,共有值传递、引用传递、默认参数3种机制。
    1、值传递
      作为值传递,就是将实际参数的值拷贝到形式参数中。然后由形式参数参与函数内部的计算,函数调用结束后,实际参数的值不会发生改变。
    用这种方式调用的函数一般都有返回值或输出值,否则函数调用实际上什么也没有做。例4-19就是使用的这种传递方式。初学者一般常使用这种传递方式。

    2、引用传递
    如果要实现形式参数改变时实际参数也发生相应的改变,就要使用引用传递的方式。参数的引用传递也有两种方法:
      ①在函数定义的时候,在形式参数前面加上“&”符号,例如:
    function fun(&$var1){……}
      ②在函数调用的时候,在实际参数前面加上“&”符号,例如:
    function fun($var1){……}
    fun(&$var2)
    如果形式参数$var1的值在函数中发生改变,实际参数$var2的值也会发生相应的改变。

    3、默认参数
      PHP 5还支持有默认值的参数,即在函数定义时可以为一个或多个形式参数指定默认值。

      PHP 5 中还提供了可变函数的机制,可以方便地利用变量实现对函数的调用。使用的基本格式为:
    Function fun(){……}
    $var=”fun”;
    $var();
      其中调用$var()就相当于调用函数fun(),$var()为可变函数。 可变函数与普通函数调用时的最大区别就在于可变函数前面有”$”,有此符号,系统就会认为是可变函数。
    友情提示:如果写成$var=”fun()”,则“$var”只是一个普通的字符串而已,再调用语句“$var;”不会实现fun()函数的功能。


    4.5.4 用函数调用实现递归与嵌套
      PHP 5中的函数支持递归赫嵌套。所谓递归就是一个函数在自己的函数体内调用自身。所谓嵌套,就是一个函数在其函数体内调用其他函数。


    4.5.5 变量在函数中的使用
      PHP 5 的变量用范围的不同可以分为若干种类,比如局部变量、全局变量、静态变量、动态变量、引用变量、预定以变量、外部变量等,下面我们就前5种变量的进行如下讲解。

    1、局部变量和全局变量
      PHP中的变量是有作用范围的,一般情况下,变量的作用域是包含变量的PHP程序块,也就是“<?php”、“?>”之间的代码或者“{”、“}”之间的代码。如果其中还有include()或require()函数包含的文件,变量的作用域也可以扩展到这些文件里。
      在主程序中定义的变量只在主程序中有效,在函数中定义的变量只在函数中有效,在函数之外就无效了。

      如果要在函数中引用主程序中的变量的值,使用PHP定义的$GLOBALS数组,$GLOBALS数组是一个以变量名为下标的数组,我们可以直接调用。
      还有一种实现跨域调用功能的方法就是使用全局变量,值得注意的是PHP中的全局变量并不是对整个程序都可见,我们在主程序中也可以访问函数中的全局变量,但是我们在函数中并不能访问主程序的全局变量。其定义的语法为:
      global $变量名;
    友情提示:在PHP函数中使用$GLOBALS数组,是不是和我们在4.4.2节中讲到的参数传递有异曲同工之效呢?为了防止程序中变量的混乱,建议尽量不要使用全局变量,至少应尽可能少地使用全局变量。

    2、静态变量和动态变量
      静态变量只能用于函数范围内,与普通局部变量不同之处在于:当该函数运行结束时,静态变量不会丢失自己的值。静态变量的定义方法为在变量名前冠以“static”关键字。
    PHP中的动态变量允许一个变量的值作为另一个变量的变量名,前提条件是这个值要符合变量命名的规则。

    友情提示:静态变量虽然在函数结束时值不会丢失,但其作用域只在本函数中,在函数之外仍然无效。


    3、引用变量
      PHP 5中支持引用变量,这是从C++语言中借用而来的。对一个变量进行引用产生新变量后,新变量可以看作是原变量的一个别名,改变其中任何一个的值,两个值都会发生改变。使用引用变量的方法是赋值时在右边变量前加“&”符号,

      引用变量在进行赋值时,系统只是简单将新变量执行原变量的地址,其中没有变量复制的操作,所以速度非常快。如果参数是大数组或对象,使用引用变量进行参数传递能节省内存并加快程序运行速度。不过其副作用就是引用值改变,原变量也会发生改变,因此是否能使用引用变量进行参数传递要视具体情况而定。

    4.6 PHP5的类与对象回到目录

      要想成为一名合格的PHP程序员,您必须掌握类和对象。您肯定知道变量和函数,但类和对象可能就是另一回事。如果您不定义、使用类和对象,您就无法创建完美的系统。即使您决定在自己的代码中不使用面向对象的编程,您仍可能需要了解面向对象的编程。比如,如果您要使用第三方库,那么您就必须学会实例化对象和调用方法。下面我们就来逐步学习类和对象的相关知识。

    4.6.1 类和对象的概念
      简单地说,类是一个由变量和方法组成的独立程序块或功能某块。这些由变量和方法结合通常能实现单个功能或一组功能。类可以直接用作组织数据和功能的简单方法,就像一组函数和变量一样,但使用类可以忽略函数和变量的存在。类可用于在内存中生成多个实例。这样的实例我们就称作对象。每个对象可以访问一组相同的函数(在面向对象上下文中叫做方法)和变量(叫做特性或实例变量),但每个变量的实际值在每个对象中是不同的。
      我们知道,角色可以扮演游戏中的一个单元——比如坦克。类可为坦克设置一组变量:防御和进攻能力,范围,健康状况,等等。该类也可以定义一组函数,其中包括 move() 和 attack()。当系统包含一个坦克类时,该类可用于生成数十个或数百个坦克对象,每个对象都潜在地具有自己的健康状况或范围特征。因此,类是用于生成对象的蓝图或模板

    4.6.2 类的定义和对象的创建

    class    类名(参数类表){
    代码块(类变量集与函数集)
    }

    我们可以看出,类是由关键字、类的名称和代码块组成。其中类名可以包含字母、数字和下划线字符的任何组合,但不能以数字打头。
    对象创建的方法为:
      $对象名=new 类名(参数类表);
      在类的主体中,可以声明叫做属性的特殊变量。在 PHP 4中,属性必须用关键字var调用。这在PHP 5仍是合法的语法,但主要是为了提高PHP 5的兼容性。事实上,PHP 5中属性的可见度是可以设置为 public、private和protected。声明为 public 的属性可以在类外部写入和读取,声明为 private 的属性只在对象或类上下文中可见。声明为 protected 的属性只能在当前类及其子类的上下文中可见(在继承部分将会看到这些内容起作用)。可以使用 private 属性来真正锁定类。如果将属性声明为 private 并试图从类范围外部访问它,PHP 引擎将抛出致命错误。
    方法,简单地说就是在类中声明的函数。我们来使用对象的某个方法时的语法为:
      $对象名->方法名(参数类表);


    4.6.3 用构造函数实现类的初始化
      在日常生活中,我们往往希望类中的一些属性,在我们声称对象的时候有个初始值,使用类的构造函数就可以达到此目的。
      构造函数是类中的一个特殊函数,这个函数的函数名与类名相同,而且在对象生成时会自动调用。


    4.6.4 类继承
      PHP 5中的类的继承功能比以前的版本有很大提高,下面我们就着重讲解一下使用extends来实现类的继承。通过已有类的继承我们可以扩充类的功能,而且可以省去很多重复编码,大大降低了程序开发的复杂度。
      一个类继承其他类时,可以继承其中所有的属性和方法,这种继承其他类的类我们称为派生类(或子类),被继承的类我们称为父类。创建派生类的语法如下:
      class 派生类(子类)名 extends 父类名


    4.6.5 同名函数实现类的多态
      当派生类(子类)中的某个函数的函数名与其父类中的某个函数名重复时,系统在派生类对象中会自动选用派生类中,这就是类的多态。在类的继承中,对同一功能而言,子类相对于父类往往应该有一些特殊性,这些特殊性功能的实现就依赖于类的多态。而在真正的使用中类的多态和类的继承往往是同时出现的。

    案例四

    回到目录

    利用类和对象的知识编写PHP程序,在网页上输出含九九乘法表在内的任意维的乘法表(如六乘六的乘法表)。

      利用程序输出九九乘法表,我想在任何一种语言中实现都是不困难,而且他也是一个常用的例子。下面我们就具体分析一下如何利用类和对象的思想输出九九乘法表以及任意维数的乘法表。

    (1)我们先建一个类名为table,这是我们实现功能的主要部分;

    (2)在类中定义一个公共变量$x;

    (3)利用构造函数初始化乘法标的维数为9,也就是定义公共变量$x为9;

    (4)编写一个函数print_table(),功能为打印出乘法表,其维数为$x,这样table类就编写完成;

    (5)初始化一对象$table1为table类;

    (6)对象$table1调用其方法print_table,这样就打印出了九九乘法表;

    (7)再初始化一对象$table2也为table类;

    (8)设置$table2的属性x为6;

    (9)对象$table2调用其方法print_table,这样就打印出了六六乘法表;

    index.php

    <html>
    <head>
    <title>乘法表</title>
    </head>
    
    <body>
    <form action="index1.php" method="POST">
    <input type="text" id="xwei" name="xwei"/>维乘法表
    <input type="submit" value="submit">
    </form>
    </body>
    
    </html>

    index1.php

    <?php
        class Table{
            //公共作用域的属性
            private $setweidu=9;
            function __construct($setweidu){
                $this->setweidu($setweidu);
            }
            public function setweidu($setweidu){
                $this->setweidu=$setweidu;
            }
            public function print_table(){
                for($i=1;$i<=$this->setweidu;$i++){
                    for($j=1;$j<=$i;$j++){
                        $count=$i*$j;
                        echo $j."*".$i."=".$count."&nbsp;&nbsp; ";
                    }
                    ?><br/> 
                    <?php
                
                }
            }
        }
        $xwei=isset($_POST['xwei'])?$_POST['xwei']:'7';
        $table=new Table(9);
        $table->print_table();
        echo "<br/>";
        $table->setweidu(6);
        $table->print_table();
        echo "<br/>";
        $table->setweidu($xwei);
        $table->print_table();
    ?>

     

    本章小结

    回到目录

    本章中我们着重介绍了PHP 5的程序结构、变量和常量、运算符和表达式,PHP 5的程序流程控制和自定义函数以及类和对象的基本概念和应用。这些知识都是我们学好PHP 5的基础。学习过C语言的读者应该发现,本章内容虽比较多,但难度不是太大。值得注意的是PHP 5中的自定义函数以及类和对象如果掌握好了,并能运用到实际开发中,特别是类和对象思想运用得熟练了,将会是我们的繁琐的开发效率和模块化进程大大提高,让我们事半功倍。

  • 相关阅读:
    redhat linux 5.6 下安装oracle 11g 时netca报错不能配置监听解决方法
    数据库迁移windows>linux ORACLE 10G
    RedHat Linux 5.3 下安装ORACLE 软件之后手动安装数据库脚本记录
    X Server/Client
    Oracle实例解析:编码与字符集(转)
    RedHat Linux 5.3 下安装ORACLE DATABASE 10G
    Toad 10.5 连接RedHat Linux 5.3 下Oracle 10g
    RedHat5.6 安装mysql
    oracle 数据库开发原则(转自求道的路上)
    第一篇使用windows live writer发布日志
  • 原文地址:https://www.cnblogs.com/liao13160678112/p/6593119.html
Copyright © 2011-2022 走看看