PHP 14:类的实例

在本章中我们将介绍一个实例,来进一步对类加深了解。
本章构建一个Page类,它代表了一个页面。其中有显示页面的title,样式,内容等函数。
此页面的效果如下:

我们将把这个页面分成几块:
1)有图的那一块。
2)有导航按钮的那一块。
3)中间文字的一会
4)页底的这一块

具体看看代码吧:

  1 <?php
  2 class Page
  3  {
  4      //Page Title
  5      public $title="Service In Action Ltd.";
  6      
  7      //Page content.
  8      public $content;
  9      
 10      //Page keywords.
 11      public $keywords="Service ,Action, Field Service, On Demand";
 12      
 13      //Page tabs navigation
 14      public $buttons= array('主页'=>'Service.php',
 15                                '产品'=>'products.php',
 16                             '服务'=>'Service.php',
 17                             '联系我们'=>'Contact.php',
 18                             '网站地图'=>'Sitemap.php');
 19                
 20      //To set page's attributes, such as title,content.                
 21   public function __set($name,$value)
 22   {
 23       $this->$name=$value;
 24   } 
 25   
 26      //To display title
 27      public function DisplayTitle()
 28      {
 29          print "<title>{$this->title}</title>";
 30      }
 31      public function DisplayContent()
 32      {
 33          print $this->content;
 34      }
 35       
 36      //To set the header meta, and set the page keyword so that search engine to scrawl it.
 37      public function DisplayKeywords()
 38      {
 39          print "<meta name=\"keywords\" content=\"{$this->keywords}\" />";
 40      }
 41      public function DisplayPage()
 42      {
 43          print "<html>\n<header>";
 44          $this->DisplayTitle();
 45          $this->DisplayStyles();
 46          print "</header>\n<body>";
 47          $this->DisplayHeader();
 48          $this->DisplayMenus($this->buttons);
 49          $this->DisplayContent();
 50          $this->DisplayFooter();
 51          print "</body>\n</html>";
 52      }
 53      public function DisplayStyles()
 54   { 
 55  ?>   
 56   <style>
 57     h1 {color:white; font-size:24pt; text-align:center; 
 58         font-family:arial,sans-serif}
 59     .menu {color:white; font-size:12pt; text-align:center; 
 60            font-family:arial,sans-serif; font-weight:bold}
 61     td {background:black}
 62     p {color:black; font-size:12pt; text-align:justify; 
 63        font-family:arial,sans-serif}
 64     p.foot {color:white; font-size:9pt; text-align:center; 
 65             font-family:arial,sans-serif; font-weight:bold}
 66     a:link,a:visited,a:active {color:white}
 67   </style>
 68 <?php
 69   }// DisplayStyles() 
 70   
 71  public function DisplayHeader()
 72  {
 73      ?>
 74      <table width="100%" cellpadding ="12" cellspacing ="0" border ="0">
 75   <tr bgcolor ="black">
 76     <td align ="left"><img src = "logo.png" /></td>
 77     <td>
 78         <h1>Service In Action Ltd</h1>
 79     </td>
 80     <td align ="right"></td>
 81   </tr>
 82   </table>
 83      <?php
 84  }
 85  
 86  //To shoe navigation bar
 87  public function DisplayMenus($buttons)
 88  {
 89      if(is_array($buttons)&&count($buttons)==0return;
 90      print  "<table width='100%' bgcolor='white' cellpadding='4'  cellspacing='4'\n";
 91   print "  <tr>\n";
 92 
 93   //calculate button size
 94   $width = 100/count($buttons);
 95 
 96   while (list($name, $url= each($buttons))
 97   {
 98     $this -> DisplayButton($width, $name, $url, !$this->IsURLCurrentPage($url));
 99   }
100   print "  </tr>\n";
101   print "</table>\n";
102  }
103  
104  //Judge the URL is current page.
105  public function IsURLCurrentPage($url)
106   {
107     if(strpos($_SERVER['PHP_SELF'], $url )==false)
108     {
109       return false;
110     }
111     else
112     {
113       return true;
114     }
115   }
116 
117  //To show the buttons.
118   public function DisplayButton($width, $name, $url, $active = true)
119   {
120     if ($active)
121     {
122       print "<td width ='$width%'>
123             <a href ='$url'>
124             <img src ='s-logo.gif' alt ='$name' border ='0' /></a>
125             <a href ='$url'><span class='menu'>$name</span></a></td>";
126     }  
127     else
128     {
129       print "<td width ='$width%'>
130             <img src ='side-logo.gif'>
131             <span class='menu'>$name</span></td>";
132     }  
133   }
134   
135   //To show Footer.
136   public function DisplayFooter()
137      {
138          ?>
139          <table width = "100%" bgcolor ="black" cellpadding ="12" border ="0">
140     <tr>
141       <td>
142         <class="foot">&copy; Service In Action Ltd.</p>
143         <class="foot">请访问我们的
144                       <a href ="">合法信息页面</a></p>
145       </td>
146     </tr>
147     </table>
148     <?php
149      }
150      function iterateVisible() {
151        echo "MyClass::iterateVisible:\n";
152        foreach($this as $key => $value) {
153            print "$key => $value\n";
154        }
155     }
156 
157  }//class Page
158  
159  $page=new Page();
160  $page->content="本页面用来测试我们最先进的服务!正在建设中,很快将会登场!";
161  $page->DisplayPage();
162  //$page->iterateVisible();
163 ?>
代码挺长的。此代码定义了一个Page类,此类有个方法为DisplayPage()将整个页面显示出来。
此类还提供了很多方法。一一介绍一下了:
1)DisplayTitle
显示页面的标题。
2)DisplayContent
显示页面的内容,就是上面说的第3块。
3) DisplayKeywords
 显示页面的关键字
4) DisplayStyles
显示页面的样式
5) DisplayHeader
  显示页面的头部,即上面的第一块
6)DisplayMenus
 显示菜单或者导航按钮,也就是上面的第2块
7)DisplayFooter
  显示页脚,上面说的第4块。
此类还是比较简单的。不再多说。熟悉一下就可以了。
让我们看看继承吧。假设有一个类用来显示Product。所以我们可以建立一个类ProductPage,并且它继承Page。改变以下显示的Button以及内容即可。
代码如下:
class ProductPage extends Page
 {
      
private $line2buttons=array('PHP'=>'PHP.php','Apache HTTP Server'=>'Apache.php',
                                   
'MySql'=>'mysql.php','Zend Studio'=>'ZendStudio.php',
                                   
'UEStudio'=>'http://www.ultraedit.com');
          
public function DisplayPage()
     {
         
print "<html>\n<header>";
         
$this->DisplayTitle();
         
$this->DisplayStyles();
         
print "</header>\n<body>";
         
$this->DisplayHeader();
         
$this->DisplayMenus($this->buttons);
         
$this->DisplayMenus($this->line2buttons);
         
$this->DisplayContent();
         
$this->DisplayFooter();
         
print "</body>\n</html>";
     }
 }

 
$page=new ProductPage();
 
$page->content="本页面用来测试我们最先进的产品!这些产品正在测试中,很快将会粉墨登场!请耐心等待";
 
$page->DisplayPage();
运行的效果如下:

具体代码就不说了。
代码下载点击这里
以上就是类的应用了。
posted @ 2006-08-11 22:10  张太国  阅读(...)  评论(...编辑  收藏