5.2.3 SmartTemplate与html模版之间的关系 内容来自www.paper51.com 为了增强系统的移植性,使系统能在Windows 、NT、UNIX及Linux环境下运行而不进行源代码的修改,采用PHP技术。开发基于WEB的软件系统,采用PHP脚本 工具,用PHP的动态库连接访问数据库,将一些对象的属性和方法封装在PHP类库中,客户端界面可用HTML与JavaScript配合完成,服务器端的应用处理可用PHP脚本+SmartTemplate引擎来具体实现。 paper51.com html模版主要用来定义最终的表现页面,而PHP脚本主要用来完成大量的逻辑处理,SmartTemplate用于将处理后的数据动态的封装到html模版中,最终显示的页面有PHP解析后发送到客户端。也就是说,经过封装以及解析的html模版主要用来发送给前端的用户,而PHP脚本主要来响应用户的请求,完成请求的逻辑处理,同时,充当着控制者的角色,用来负责响应的事务处理。 paper51.com SmartTemplate本身没有任何的业务处理逻辑,它只是简单地检索PHP脚本定义的对象,再将动态的内容插入到预定义的html模版中。 http://www.paper51.com PHP脚本创建SmartTemplate需要的变量和对象,再根据用户的行为,决定处理哪个html模版并发送给用户。 http://www.paper51.com 在实际开发过程中,往往是先把html模版开发出来,然后再将html模版中需要动态生成的部分用SmartTemplate预定义的标签代替。这样做的好处是充分利用了HTML的页面表现能力,避免了PHP脚本在页面表现方面的不足,大大缩短了开发周期,各尽所能。 内容来自论文无忧网 www.paper51.com 以下是节选程序代码中的HTML模版转换为最终的页面对象: 内容来自www.paper51.com 1. 首先,用HTML编辑工具开发出HTML页面 paper51.com … …. …. …. paper51.com <form action="search.php"id="find_photo" method="post"> 内容来自论文无忧网 www.paper51.com
<div align="left"> 内容来自www.paper51.com 搜索图片: <input type="text"name="key" size="24" /> 内容来自论文无忧网 www.paper51.com <input id="findbutton"type="submit" name="find_photo" value="搜索" /> 内容来自论文无忧网 www.paper51.com </div> copyright paper51.com </form> copyright paper51.com <!--this is the content of theslidshow--> copyright paper51.com
<!-- do not modify the id of thefather of dojoslidshow---> http://www.paper51.com {flash_slideshow} 内容来自论文无忧网 www.paper51.com </div> 内容来自论文无忧网 www.paper51.com <!--agl:cssobjectid="indexphotolist" type="Three Columns" /--> paper51.com <!-- BEGIN img_thb_block --> copyright paper51.com
<divclass="threecolbox_indexphotolist"> 内容来自论文无忧网 www.paper51.com <a href="{org_link}"class="thickbox" rel="gallery-plants"> http://www.paper51.com <img src="{link}"alt="" width="70" height="70" border="0"/> paper51.com </a> paper51.com
</div> 内容来自www.paper51.com <!-- END img_thb_block --> http://www.paper51.com …. …. …. 内容来自www.paper51.com
2. 通过PHP解析将对应内容填充到HTML模版内 copyright paper51.com … …. …. …. http://www.paper51.com <?php 内容来自www.paper51.com if (!empty($_obj['img_thb_block'])){ http://www.paper51.com if (!is_array($_obj['img_thb_block'])) paper51.com
$_obj['img_thb_block']=array(array('img_thb_block'=>$_obj['img_thb_block'])); paper51.com $_tmp_arr_keys=array_keys($_obj['img_thb_block']); 内容来自www.paper51.com if ($_tmp_arr_keys[0]!='0') paper51.com
$_obj['img_thb_block']=array(0=>$_obj['img_thb_block']); http://www.paper51.com $_stack[$_stack_cnt++]=$_obj; 内容来自www.paper51.com
foreach ($_obj['img_thb_block'] as$rowcnt=>$img_thb_block) { paper51.com $img_thb_block['ROWCNT']=$rowcnt; 内容来自论文无忧网 www.paper51.com $img_thb_block['ALTROW']=$rowcnt%2; http://www.paper51.com $img_thb_block['ROWBIT']=$rowcnt%2; paper51.com $_obj=&$img_thb_block; 内容来自论文无忧网 www.paper51.com ?> 内容来自www.paper51.com <divclass="threecolbox_indexphotolist"> copyright paper51.com <a href=" paper51.com <?php 内容来自论文无忧网 www.paper51.com echo $_obj['org_link']; copyright paper51.com ?> http://www.paper51.com " class="thickbox"rel="gallery-plants"><img src=" copyright paper51.com
<?php 内容来自www.paper51.com echo $_obj['link']; 内容来自www.paper51.com ?> paper51.com " alt=""width="70" height="70" border="0" /></a> 内容来自论文无忧网 www.paper51.com </div> copyright paper51.com …. …. …. copyright paper51.com 5.3 数据库设计 paper51.com paper51.com 图5-5 图片共享系统数据库设计结构图 内容来自论文无忧网 www.paper51.com
上图是根据需求设计出十二个数据表,分别是:系统设定表(setting),管理员操作记录表(adminlog),管理员信息表(admin_info),图片缓存记录表(hash_cache),缩略图表(photothumbs),图片表(photo),用户组表(group_setting),用户信息表(member_info),用户登陆记录表(loginlog),图片分类表(sort_setting),用户上传相册表(job)以及标签表(tags_setting)。 内容来自论文无忧网 www.paper51.com
该表主要分为以下几个部分: 内容来自www.paper51.com 管理员相关表: copyright paper51.com
图5-6 管理员相关表 内容来自www.paper51.com 系统设置表: 内容来自www.paper51.com
图5-7 系统设置表 paper51.com 用户组设置表 http://www.paper51.com 图5-8用户组设置表 内容来自www.paper51.com
图片信息表 http://www.paper51.com 图5-9图片信息表 内容来自www.paper51.com 相册以及标签分类表 paper51.com 图5-10相册分类以及标签表 内容来自论文无忧网 www.paper51.com |