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

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

9/17/2020 9:31:19 PM 人评论

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

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

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

(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 }

【代码解析】第03~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关键字,它代表类的当前实例。代码第04行使用$this->keywords取得当前实例的keywords属性的值。

(5)实现其他显示Web页面各个部分的类方法。和方法DisplayKeywords()类似,这里不再一一列举。将这个Web页面类命名为Page,代码15-9为该类完整的代码。

代码15-9 Page类的完整代码15-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\">
版权所有 &copy; 2012 &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;                  &nbsp;Powerd 
     130    by Apache + PHP + MySQL</p>";
     131            echo "</td>";
     132            echo "</tr>";
     133            echo "</table>";
     134    }
     135 }?>

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

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

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


     01 <?php
     02 include("15-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 ?>

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

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

上一篇:15.2PHP中的类和对象

下一篇:15.4小结

相关教程

共有条评论 网友评论

验证码: 看不清楚?