免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: axgle
打印 上一主题 下一主题

[发布]PHP资源模板(assetTemplate1.15) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-23 10:17 |只看该作者
原帖由 ultralqxq 于 2006-3-23 09:47 发表
其实借你的思想,任何模伴类都可以做到资源模板。。。比如fasttemplate,我就完全可以用{source}这样的文件夹来存放资源。。。并且我也试过了,确实可行。。。

你的模板我仔细看过N遍了。。可惜我技术差,看不透内在。。。所以有几个问题想请教你一下怎么解决:
1。从start()函数来看,当想用index.html为模板时,就必定会生成index.php文件。。。。
那么假如我有好几个PHP文件想调用index.html做模板时怎么办?比如文章列表,我以list.html做为模板,不管哪个PHP想生成列表,都是以list.html为模板的,这时要传什么参数给start()呢?

2。当网页中有iframe时,而iframe页面中又有图片还有链接到其他网页的超链接,这时问题就复杂化了。。你觉得,这个iframe应该怎么处理?我是又新建了一个{iframe}来存放iframe页面来解决的。但是,随着问题的复杂化,“文件夹变量”会越来越多,而且全部都是全局变量,你不觉得这样很有安全隐患吗?

3。还有,在HTTP协议下,存在着URL编码问题,就是象中文那样,放到地址栏上会变成类似%xx这样的形式。。。那么象$这样的特殊字符,放到地址栏上会不会“变样”呢?我在本地服务器上测试过,没有变,但不敢肯定在linux服务器下也不会变~~楼主试过没有?

1.传递list给start,一个模板可以多次使用-----不会重复生成list.php编译文件(因为只要存在list.php并且list.html没被修改,就忽略编译).
你的这个担心是不必要的

2.assetTemplate全部用php变量,不需要自己定义{iframe}这样的标签.并且并非"全部都是全局变量",而是局限在一个具体的assetTemplate类中.例如$ass1=new assetTemplate,$ass2...,那么1与2之间的变量若不显式赋值,则是不可共享的.因为include是在函数内部执行的,这就避免了当前页面的全局变量.

3.linux,unix,windows都测试通过,不过mac和dos没有进行测试

[ 本帖最后由 axgle 于 2006-3-23 10:39 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2006-03-23 10:45 |只看该作者
输出表格的模块嵌套演示,也就是形行(预先不知道有多少列,例如数据库表中的字段数):

phplib template的描述:

  1. <table border="1">
  2. <!-- begin row -->
  3.     <tr>
  4.         <!-- begin col -->
  5.         <td>{col_title}</td>
  6.        <!-- end col -->
  7.    </tr>
  8. <!-- end row -->
  9. </table>
复制代码



assetTemplate的写法:



  1. <table border="1">
  2. <!--php foreach($table as $row) { -->
  3.         <tr>
  4.         <!--php foreach($row as $col){ -->
  5.                 <td>$col</td>
  6.         <!--php } -->
  7.         </tr>
  8. <!--php } -->
  9. </table>
复制代码

[ 本帖最后由 axgle 于 2006-3-23 11:10 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-03-23 11:25 |只看该作者
能不能提供一个iframe的演示??

如我复制index.htm,粘贴后更名为index2.htm;接着在index.htm代码里加上一句:<iframe width=420 height=330 src=index2.htm></iframe>


index.htm代码变成:
<html>
<body>
<title>$site_name</title>
<img src="$assets/images/logo.gif" width="88" height="31" border="0" alt="">

$site_name
<a href="login.htm">登陆</a>
<hr>
<iframe width=420 height=330 src=index2.htm></iframe>
<!--php foreach($indexdb as $title=>$link) { -->
        <li><a href="$link">$title</a><br>

<!--php   }    -->

<!--php if($_GET['act']=='test') { -->
        some info
<!--php } -->

<!--php if($_GET[act]=='list') { $item=listItem();foreach($item as $val) { -->
        <li>$val <br/>
<!--php        } } -->
<hr>
axgle@2006
</body>
</html>


index2.htm代码跟原来的index.htm一样。那么应该怎样改动 index.php呢?
PS:我下载的是Assetsii

[ 本帖最后由 ultralqxq 于 2006-3-23 11:30 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2006-03-23 11:38 |只看该作者
把<iframe width=420 height=330 src=index2.htm></iframe>
修改为
<iframe width=420 height=330 src=index2.php></iframe>
不行么?新加一个index2.php文件而非修改index.php文件.

另外Assetsii是我版本控制没有考虑周到,现在正式的以assetTemplate为准.

[ 本帖最后由 axgle 于 2006-3-23 11:40 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2006-03-23 12:01 |只看该作者
试过不行才上来问大侠你的啊~呵呵。。。这也是我刚才问的那个iframe的问题的为难之处。。。

[ 本帖最后由 ultralqxq 于 2006-3-23 12:03 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2006-03-26 12:52 |只看该作者
今天已更新到assetTemplate1.03
^_^

论坛徽章:
0
17 [报告]
发表于 2006-03-28 09:56 |只看该作者
更新到assetTemplate1.04
^_^

论坛徽章:
0
18 [报告]
发表于 2006-03-29 09:24 |只看该作者
呵呵1.04才真有点完整模板的样子
很喜欢其中的
define('ASSET_TEMPLATE_DIR','template');
define('ASSET_COMPILE_DIR','template_c');

assetLite
谢谢axgle
另外感觉如果用
assetLite
作装配,
assetTemplate
作细节实现真是很好的组合!
不知道
axgle
有没有这个想法呀!

论坛徽章:
0
19 [报告]
发表于 2006-03-31 14:08 |只看该作者
不错,简单易用:)

我做了一点小修改
加一个判断$this->doCompileRealTime参数
start()里边,只有已编译模板不存在,
或者($this->doCompileRealTime有效,并且未编译模板有更新)
才编译新模板

否则每次调用模板都要filemtime()两次
有点消耗资源:)

论坛徽章:
0
20 [报告]
发表于 2006-03-31 22:00 |只看该作者
我已经尝试过了
想法很好,但要想成为一个成熟的作品还好远哦

我用0.几的做了一个小东西.
但现在,我还是用smarty

等楼猪的asset发展到3.0,我一定大力使用!



感谢楼猪!
加油!



[ 本帖最后由 font 于 2006-3-31 22:09 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP