当前位置:沸点梦工场 > WAP网页设计 > Php wap开发教程 > 浏览文章

php WAp开发教程

互联网 2007年06月04日 【字体:

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对象的实现   首先确定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;
  }
  }
  }

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

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14]  下一页


上一页      下一页
本文共 14 页,第  [1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  
[11]  [12]  [13]  [14]  页