当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

14.3实例分析——深入理解PHP的类和对象

9/17/2020 9:26:54 PM 人评论

14.3实例分析——深入理解PHP的类和对象

14.3 实例分析——深入理解PHP的类和对象

有了前面学习关于面向对象编程的基础知识,本节通过一个具体实例来深入认识PHP中的类和对象。在面向对象编程的思想中,任何一个事物都是对象,一个Web页面也不会例外。这节就使用PHP创建一个代表Web页面的类,使用该类可以生成HTML页面。首先分析一个Web页面应该具备哪些基本属性。

(1)一个Web页面就是一个HTML文档,HTML文档应该具有标题和内容,这里再增加一个属性,就是HTML文档的META关键字,使用META关键字有利于搜索引擎搜索到该Web页面。所以,这个Web页面类应该具有的属性是:标题、内容和关键字。它们都是公有属性,应该使用public关键字声明,如下代码所示。


public$title;

public$content;

public$keywords;


因为网站的每个页面都应该有一个导航栏,以便用户访问完整的任一个栏目,所以还需声明一个存放导航栏内容的属性。在这里,将这个属性声明为数组,用数组来存放导航栏的内容,代码如下所示。


public$buttons=array(

'主页'=>'#',

'产品'=>'#',

'服务'=>'#',

'联系我们'=>'#',

'网站地图'=>'#'

);


这里定义了5个导航链接,每个导航链接名称作为数组的索引,而链接的URL作为数组元素。这里没有明确的URL,所以均以#代替。

(2)接下来,要定义该类的方法,通过这些方法可以生成Web页面的各个部分,如Web页面的页头部分、关键字部分、CSS部分、页面的导航链接、正文部分以及页面的页底部分。

(3)一个页头部分主要显示网站的LOGO和网站名称。在本实例中,这些内容将放置在一个表格当中。在类的方法中,使用echo语句将这个HTML表格输出,从而达到显示页头内容的目的。将显示页头部分的类方法命名为DisplayHeader,其代码如下所示。


01 public function DisplayHeader()

02 {

03 echo"<table width=\"100%\"cellpadding=\"12\"cellspacing=\"0\"border=\"0\">";

04 echo"<tr>";

05 echo"<td align=\"left\"><img src=\"apache.gif\"/></td>";

06 echo"<td bgcolor=\"#FFFFFF\">";

07 echo"<h1>网站名称放在这里</h1>";

08 echo"</td>";

09 echo"<td align=\"right\"></td>";

10 echo"</tr>";

11 echo"</table>";

12 }


【代码解析】第3~11行其实输出的是一个表格。

(4)关键字部分也需要使用类方法输出到浏览器,关键字定义在<emta>标签中,所以输出关键字的类方法如下所示,将其命名为DisplayKeywords。


01 public function DisplayKeywords()

02 {

03 echo"<meta name=\"keywords\"content=\"";

04 echo$this->keywords;

05 echo"\"/>\r\n";

06 }


【代码解析】在方法DisplayKeywords()中,使用了$this关键字,它代表类的当前实例。代码第4行使用$this->keywords取得当前实例的keywords属性的值。

(5)其他显示Web页面各个部分的类方法,和方法DisplayKeywords()类似,这里不再一一列举。如果将这个Web页面类命名为Page,那么该类完整的代码如下所示。

代码14-9 Page类的完整代码14-9.php


01 <?php

02 class Page

03 {

04 public$title="音乐唱片大全";//页面标题

05 public$content;//页面内容

06 public$keywords="MP3,音乐,唱片,music";//页面关键字

07

08 public$buttons=array(//页面导航数组

09 '主页'=>'#',

10 '产品'=>'#',

11 '服务'=>'#',

12 '联系我们'=>'#',

13 '网站地图'=>'#'

14 );

15

16 public function DisplayTitle()//显示页面标题的方法

17 {

18 echo"<title>";

19 echo$this->title;

20 echo"</title>\r\n";

21 }

22

23 public function DisplayContent()//显示页面内容的方法

24 {

25 echo$this->content;

26 }

27

28 public function DisplayKeywords()//显示页面关键字的方法

29 {

30 echo"<meta name=\"keywords\"content=\"";

31 echo$this->keywords;

32 echo"\"/>\r\n";

33 }

34

35 public function DisplayPage()//输出整个页面

36 {

37 echo"<html>\r\n<header>";

38 $this->DisplayTitle();

39 $this->DisplayStyles();

40 $this->DisplayKeywords();

41 echo"</header>\r\n<body>";

42

43 $this->DisplayHeader();

44 $this->DisplayMenus($this->buttons);

45 $this->DisplayContent();

46

47 $this->DisplayFooter();

48 echo"</body>\r\n</html>";

49 }

50

51 public function DisplayStyles()//显示CSS部分

52 {

53 echo"<style>";

54 echo"h1{color:#000000;font-size:24pt;text-align:center;font-family:arial,sans-serif}";

55 echo".menu{color:#256114;font-size:12pt;text-align:center;font-family:arial,sans-serif;

56 font-weight:bold}";

57 echo"td{background:#EFEFEF}";

58 echo"p{color:black;font-size:12pt;text-align:justify;font-family:arial,sans-serif}";

59 echo"p.foot{color:#256114;font-size:9pt;text-align:center;font-family:arial,sans-serif;

60 font-weight:bold}";

61 echo"a:link,a:visited,a:active{color:#256114}";

62 echo"</style>";

63 }

64

65 public function DisplayHeader()//输出页头部分

66 {

67 echo"<table width=\"100%\"cellpadding=\"12\"cellspacing=\"0\"border=\"0\">";

68 echo"<tr>";

69 echo"<td align=\"left\"><img src=\"apache.gif\"/></td>";

70 echo"<td bgcolor=\"#FFFFFF\">";

71 echo"<h1>音乐唱片大全</h1>";

72 echo"</td>";

73 echo"<td align=\"right\"></td>";

74 echo"</tr>";

75 echo"</table>";

76 }

77

78 public function DisplayMenus($buttons)//输出页面导航部分

79 {

80 if(is_array($buttons)&&count($buttons)==0)

81 return;

82 echo"<table width=\"100%\"bgcolor=\"#FFFFFF\"cellpadding=\"4\"cellspacing=\"4\"\n";

83 echo"<tr>\n";

84

85 //calculate button size

86 $width=100/count($buttons);

87

88 while(list($name,$url)=each($buttons))

89 {

90 $this->DisplayButton($width,$name,$url,!$this->IsURLCurrentPage($url));

91 }

92 echo"</tr>\n";

93 echo"</table>\n";

94 }

95

96 public function IsURLCurrentPage($url)//是否是当前页面链接

97 {

98 if(strpos($_SERVER['PHP_SELF'],$url)==false)

99 {

100 return false;

101 }

102 else

103 {

104 return true;

105 }

106 }

107

108 public function DisplayButton($width,$name,$url,$active=true)//输出按钮

109 {

110 if($active)

111 {

112 echo"<td width=\"$width%\"align=\"center\">";

113 echo"<a href=\"$url\">";

114 echo"<a href=\"$url\"><span class=\"menu\">$name</span></a></td>";

115 }

116 else

117 {

118 echo"<td width=\"$width%\">";

119 echo"<img src=\"side-logo.gif\">";

120 echo"<span class=\"menu\">$name</span></td>";

121 }

122 }

123

124 public function DisplayFooter()//输出页脚部分

125 {

126 echo"<table width=\"100%\"bgcolor=\"black\"cellpadding=\"12\"border=\"0\">";

127 echo"<tr>";

128 echo"<td>";

129 echo"<p class=\"foot\">版权所有©2012   |   Powerd

130 by Apache+PHP+MySQL</p>";

131 echo"</td>";

132 echo"</tr>";

133 echo"</table>";

134 }

135 }?>


【代码解析】代码14-9定义了完整的Page类,该类通过不同的类方法,输出Web页面的不同部分。

(6)接下来,在一个PHP程序中使用这个类生成Web页面,同时检验类定义的准确与完整性。代码14-10演示了如何在程序中使用Page类。

代码14-10 在程序中使用Page类14-10.php


01 <?php

02 include("14-9.php");

03

04 $page=new Page();

05 $page->content="<p>MP3可谓是大名鼎鼎,它采用MPEG Audio Layer 3技术,将声音用1:10

06 甚至1:12的压缩率压缩,采样率为44kHz、比特率为112kbit/s。MP3音乐是以数字方式储存的音乐,

07 如果要播放,就必须有相应的数字解码播放系统,一般通过专门的软件进行MP3数字音乐的解码,

08 再还原成波形声音信号播放输出,这种软件就称为MP3播放器,如Winamp等。</p>";

09 $page->DisplayPage();

10 ?>


【代码解析】代码14-10首先将Page类的定义引入程序,如代码第2行所示。接着,定义了类的实例$page,并将类的属性$content赋值一段文字,如代码第4行所示,这段文字将成为Web页面的主要内容。最后,第9行通过类方法DisplayPage()生成这个Web页面。通过浏览器访问14-10.php,将会看到如图14-7所示的效果。

图 14-7 使用Page类生成Web页面

相关教程

共有条评论 网友评论

验证码: 看不清楚?