统计在线人数...

WAP与PHP - 进阶篇 之二

[ 来源:转载 | 作者:佚名 | 时间:2006-5-29 12:51:40 | 浏览:统计中... ]

WAP与PHP - 进阶篇 
WAP&PHP | 基础篇 | 附件 
2.对象实现 
  我们将利用以上定义的常量和函数实现我们定义的若干对象。我们从上层对象开始,逐步向下实现,上层对象可以调用下层对象的方法。在实现过程中可以经常参考图1,明确对象的关系。 


2.1 Deck对象的实现 2.2 Text对象的实现 2.3 Image对象的实现 
2.4 Table对象的实现 2.5 Row对象的实现 2.6 Hyperlink对象的实现 
2.7 Input对象的实现 2.8 Select对象的实现 2.9 Do对象实现 
2.10 Fieldset对象的实现 

2.1 Deck对象的实现 [TOP] 
  首先确定Deck对象的属性,如表1所示。 

属性名称 含义 
$card_title 标题 
$card_alignment 页面格式 
$card_element Card所包含的元素,如Text、Table等 
$element_number Card中所包含的元素数目 
$default_item 变量及其默认值数组 
$default_number 默认值数组元素数目 
表1 Deck对象的属性 

接着确定Deck对象的方法,如表2所示。 

方法名(函数) 功能 
My_Deck 自构函数,对象创建时被自动调用 
Add_Element 加入元素,如Text、Image、Table、Hyperlink、Input、Select、Do等 
Make_Deck 建立Deck(最关键的函数,它将最终产生需要的Deck) 
表2 Deck对象的方法 

  在我们所定义的函数中,比较复杂的是Add_Element函数和Make_Deck函数。 
   
  Add_Element函数的入口参数为任何一种所定义的元素,如Text、Image等。函数开始先进行入口参数的检查,判断是否为合法对象,这种检查还会经常出现在后续的对象实现中。如果检查入口参数不是对象,则将出错退出。接下来判断入口参数是否为我们已经定义过的对象种类,如果是,则将其假如到card_element属性中,并使element_number计数器加1。如果入口参数是无法识别的对象,则程序报错退出。 
  Make_Deck函数很复杂,我们按以下步骤实现: 
  1.发送标头; 
  2.产生Deck头代码; 
  3.利用相应对象封装的get_defaults函数获取某些元素,如Select、Fieldset等中的变量的默认值(如果存在); 
  4.如果缺省值存在,列出与缺省值相关的代码,即进入页面后自动刷新相应变量为缺省值; 
  5.设置页面格式; 
  6.对Deck中包含的每一个对象调用其封装的Make_Element函数产生各自的代码; 
  7.产生Deck结束代码。 
   
  虽然我们在此列出的步骤很简单,但是具体的实现却牵扯到很多细节,而这些实现需要编程人员对WML语言比较了解,特别是对Deck和Card的构造很熟悉。下面列出了其中比较复杂的获取变量默认值部分的代码和创建各元素部分代码的源程序,这两个部分体现了PHP语言面向对象编程的特点。 

 //获取交互元素如Input,Select的一些变量默认值 
  while(list($thekey,$thevalue)=each($this->card_element)) 
  { 
  switch($thevalue->My_Type()) 
  { 
  case I_AM_SELECT: 
  case I_AM_FIELDSET: 
  { 
  $temp_element=$thevalue; 

  $temp_default=$temp_element->get_defaults(); 
   
  if($temp_default) 
  { 
   $this->default_item[$this->default_number]=$temp_default; 

   $this->default_number++; 
   break; 
   } 
   default: 
   { 
   break; 
   } 
  } 
  } 

 //产生相关元素各部分的代码 
   for($i=0;$i<$this->element_number;$i++) 
   { 
   $the_element = $this->card_element[$i]; 
   switch ($the_element->My_Type()) 
   { 
   case I_AM_TEXT: 
   case I_AM_IMAGE: 
   case I_AM_TABLE: 
   case I_AM_HYPERLINK: 
  case I_AM_INPUT: 
  case I_AM_SELECT: 
  case I_AM_D 
  case I_AM_FIELDSET: 
    { 
    $temp_element = $this->card_element[$i]; 
  
    $temp_element->Make_Element(&$this); 

    break; 
   } 
   default: 
  { 
  break; 
  } 
  } 
  } 

  由于篇幅原因,细节实现不在此讨论,读者可以参阅所附的代码。 

共有0人参与评价,平均得分:0分
评论内容只代表网友观点,与本站立场无关! 查看完整内容
   

当前在线人数
QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)