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;
}
}
}
由于篇幅原因,细节实现不在此讨论,读者可以参阅所附的代码。
[1] [2] 下一页
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器