[hu60t手册]函数、类方法列表

0. 如何在smarty里使用函数、类方法?
    smarty3可以直接调用php的函数和类方法,如:
  {date("Y-m-d H:i:s")}
    这将直接输出date()函数的值。
    类的静态方法也一样,比如调用hu60类的getmyurl()静态方法:
    {hu60::getmyurl()}


1. xhtml/wml自适应的变量调节器
    smarty中用来在输出之前格式化字符串的“函数”被称为变量调节器,它的介绍见此处smarty2模板手册(除了这条,你也可以看看其他条目。虽然有些内容过期了,但还是很详细的。英汉对照。)
    
    hu60t中定义了一个名为code的变量调节器,它可以帮你进行html实体编码、换行转换、wml的$转成$$。
  
  参数1:把换行符(\r\n、\r或\n)转换为什么。取值有:
    true或1(转成
),在html属性值里需要用这种转换。
    2(转换为<br/>)。
    其他值(转换为指定的字符串)。
    默认值是false。
    
  参数2  是否不把空格转换为&nbsp;
    false  会把空格转成&nbsp;
    true  不把空格转成&nbsp;
  
    使用例子:
  <a href="{hu60::getmyurl()|code}">刷新本页</a>
  例2:php:
$tpl->assign('lrc',"当天际传来第一道曙光\n振翅飞翔  充满力量\n阴霾终究会沐浴阳光\n我们在  海风中  歌唱");
tpl:
无换行:{$lrc|code}<br/>
正常:{$lrc|code:2}<br/>
只有一个空格:{$lrclcode:2:true}
(注:html/wml把没有转换为&nbsp;的多个空格当一个空格处理,所以只有一个空格)


2. 变量调节器cut
  hu60t还定义了一个用于分割utf-8字符串的调节器cut,在下文介绍str::cut()时会详解。


  
3. class hu60

    以下是hu60类的静态方法(采用php手册的参数类型、返回值说明方式):

  string getmyurl(array $page=array())
    取得当前页面的相对路径。
    例:当前页面是m.php/a.b.wml?d=e&f=g,hu60::getmyurl()将返回a.b.wml?d=e&f=g
    可选的参数$page是一个关联数组,包含了想要替代的$PAGE中的键值。
    例:上例改成hu60::getmyurl(array('bid'=>'xhtml')),将返回a.b.xhtml?d=e&f=g


  string load_page(string $cid, string $pid, string $bid)
    返回指定cid、pid、bid的php的路径。
    它会使用hu60t的php定位规则,依次查找page/$cid/$pid.$bid.php、page/$cid/$pid.php、page/error/no_page.$bid.php、page/error/no_page.php。
    它不会返回失败,因为如果被加载的文件不存在,它返回page/error/no_page.php,即使这个文件不存在也一样。
    用法举例:include hu60::load_page('a','b',$PAGE['bid']);


  void gz_start(integer $gzip=PAGE_GZIP)

    该方法尝试开启页面的gzip压缩,可选的参数是gzip压缩级别(1~9启用gzip。0或false不启用gzip,但启用输出缓冲区,具体可以看一下class/hu60.php)。
    如果浏览器或服务器不支持,或者服务器禁用gzencode(),gzip压缩不会被开启,但仍然会开启输出缓冲(ob_start)
    该方法没有返回值。调用后可以通过$PAGE['gzip']判断gzip压缩是否开启。
    如果参数留空(例 hu60::gz_start()),gzip压缩级由配置文件config/system.php中的PAGE_GZIP决定


  void gz_stop(void)
    关闭gzip压缩,清空并关闭输出缓冲。在此之前的输出都不会被显示。

  object tpl(boolean $new=false)
    此方法返回一个smarty类的实例,并且已经被hu60t配置好。
    如果$new=false,多次调用得到的是同一个实例。如果$new=true,每次调用都会产生一个新的实例。
    hu60::tpl()在模板内预设了两个引用变量,$page和$user,分别是全局变量$PAGE和$USER的引用。在下一节“开发规范”中将提到$USER。因为是引用,所以在模板中对$page和$user的修改也会使$PAGE和$USER的值改变。
    hu60::tpl()在模板内预设了三个常用变量:$cid、$pid、$bid,方便在模板中输出本页或目标页的URL。(采用值传递,修改它们不会影响到$PAGE数组中相同的值)

  void start(boolean $nogzip=false, boolean $notpl=false)
    这个函数初始化hu60t的环境,应该在每个页面php开始时被调用。
    它可以自动调用hu60::gz_start()和hu60::tpl(),你不需要再去调用。被建立的模板引擎实例是全局变量$tpl。
    通过两个参数可以不让hu60::start开启gzip或初始化模板引擎。
    
  例:page/test/a.php
<?php
hu60::start();
$tpl->display('tpl:a');


  
  boolean reg_page_bid(string $bid, string $func=null)
  
    注册新的页面类型(bid)。
    $bid是必须是一个只含a-z0-9下划线(_)或减号(-)的字符串。
    $func是一个用来判断浏览器是否支持该bid的函数,具体怎样写见另一节“添加新的页面类型”。
    如果$func=null或未指定$func,则认为$func="hu60_page_$bid",并尝试自动加载FUNC_DIR."/hu60.page.$bid.php"来载入该函数。
    返回值:
        bid已注册或成功注册均返回true
        失败返回false
  
  例:hu60::reg_page_bid('html'); //将自动加载func/hu60.page.html.php并检查是否存在函数hu60_page_html(),如存在,则注册成功,返回true;否则返回false。
    一般在sub/regbid.php集中注册bid。


  boolean get_page_mime(void)
    依次调用已注册的bid的回调函数,直到找到一个适合当前浏览器的bid。自动调整$PAGE['bid'],并设置$PAGE['mime']。
    如果通过回调函数找到了合适的mime,返回true。否则,将使用默认的bid和mime(在config/system.php设置),并返回false
    你在页面php中不需要调用该函数,m.php已调用它设置好了$PAGE['bid']和$PAGE['mime']。
回复列表(13|隐藏机器人聊天)
  • @Ta / 2012-05-12 / /
    也就是说只要将类封装好,然后在模板中{类名::方法....}这样就行了?
  • @Ta / 2012-05-12 / /
    是的。
  • @Ta / 2012-05-12 / /
    而且php函数和smarty语法可以混用:
    {hu60::getmyurl()|code}
    {form::select("abd", [1,2,3,4,5], ["a","b","c","d","e"])}
  • @Ta / 2012-05-12 / /
    但是模板只是用来显示的,频繁调用php函数是不是有点不符合逻辑与视图分离的要求啊。除非这些函数只用于格式化字符串。
  • @Ta / 2012-05-12 / /
    一步步来吧,暂时还不习惯,相信很多人和我一样,写着写着就混乱了,我在考虑着是不是该把操作都交给php处理,再用模板显示结果
  • @Ta / 2012-05-12 / /
    @  我的想法是这样的:
      php处理并得到原始数据。
      模板加工原始数据并输出。
      像“把多于20字的标题截断”等这种和显示相关的处理不要让php进行,而应该交给模板。
      因为这样的话以后我们想把标题改成30字就不需要修改php了。
      同样,读取参数、查询数据库等操作也一定不要写进模板,除非那是公共head或foot(模板不支持include_php了,动态调用也只能写成模板,比如hu60wap6取新内信的操作就得在tpl:comm.head里进行)。
  • @Ta / 2012-05-13 / /
    低调的顶过。
  • @Ta / 2012-05-13 / /

    再低调的路过Smarty-百度百科
  • @Ta / 2012-05-13 / /
    不适合使用Smarty的地方:需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。(其实这是不对的。需要实时更新的内容只是不适合用Smarty缓存而已,只要关掉缓存,并不要使处理速度变慢)
  • @Ta / 2012-05-13 / /
    看不太懂,不过呢,有例子就好多了
  • @Ta / 2012-05-13 / /
    看不太懂,不过呢,有例子就好多了
  • @Ta / 2012-05-13 / /
    @胡鹏 例子很快就会有的。
    这个框架我是在边写文档边修改啊,我得等文档写完再举例子。
  • @Ta / 2012-05-13 / /
    @老虎会游泳 那您老人家慢慢写吧,看好你哦!我等您写好再看
添加新回复
回复需要登录