V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wdd2007
V2EX  ›  PHP

Smarty 现在还有人用吗?

  •  
  •   wdd2007 · 2013-07-10 21:24:51 +08:00 · 12416 次点击
    这是一个创建于 4160 天前的主题,其中的信息可能已经有所发展或是发生改变。
    32 条回复    1970-01-01 08:00:00 +08:00
    shiny
        1
    shiny  
       2013-07-10 21:29:24 +08:00
    几年前用了,感觉自定义标签和过滤器非常慢,看了实现是eval的。于是费了一年多时间写了个模板引擎。
    后来用着用着觉得,一般使用场景下,其实用的人如果注意代码质量,用PHP原生语法也挺好;如果用的人不注意代码质量,模板引擎带来的好处也有限,让整个系统变得更复杂。
    iloveyou
        2
    iloveyou  
       2013-07-10 21:38:44 +08:00
    php就是模板语言
    donald
        3
    donald  
       2013-07-10 21:45:18 +08:00
    现在貌似twig比较火?
    darasion
        4
    darasion  
       2013-07-10 22:27:06 +08:00
    倾向于直接php,但是,smarty,大把人习惯了,成为传统了,一般没人知道当初为什么用它。
    xunyu
        5
    xunyu  
       2013-07-10 23:19:04 +08:00
    我还在用
    Feobe
        6
    Feobe  
       2013-07-11 01:08:17 +08:00
    Twig已完胜smarty。
    或者直接原生。
    buru
        7
    buru  
       2013-07-11 01:10:19 +08:00 via iPhone
    twig 因为我写python用jinja2 两者很像
    PrideChung
        8
    PrideChung  
       2013-07-11 01:17:14 +08:00   ❤️ 1
    倾向于用框架自带的模板或者直接PHP,有些人不知道,PHP的控制结构其实是有替代语法的:

    <? if ($foo = 'foo'): ?>
    <p>foo</p>
    <? else: ?>
    <p>bar</p>
    <? endif ?>

    使用比较清爽的 short_open_tag 看起来跟Smarty也没什么区别,效率肯定更好。
    chshouyu
        9
    chshouyu  
       2013-07-11 01:17:28 +08:00
    @buru 这么巧
    fkccp
        10
    fkccp  
       2013-07-11 12:21:41 +08:00
    现在被逼用thinkphp,我个人倾向原生php~
    ruchee
        11
    ruchee  
       2013-07-11 12:28:50 +08:00
    Samrty只要不理会它那些复杂的结构,只用最简单的还是挺好用的,公司框架就用的它

    Twig这几天正在看,感觉重复造轮子啊,丫的,它居然把PHP自带的很多函数重新封装了一遍,还美其名曰过滤器,闲的蛋疼
    sun019
        12
    sun019  
       2013-07-11 13:13:10 +08:00
    discuz 或者ecmall的 框架都 挺好用的 扒出来用吧
    credochen
        13
    credochen  
       2013-07-11 17:01:38 +08:00
    我是用原生的PHP。smarty还没正式用过
    harryxu
        14
    harryxu  
       2013-07-11 17:04:49 +08:00
    我倒是非常喜欢用laravel的blade模板,可以模板语法和php语法混用,感觉很轻量级又很灵活。
    yetone
        15
    yetone  
       2013-07-11 17:17:12 +08:00
    @PrideChung 这种替代语法其实是不推荐的。
    chchwy
        16
    chchwy  
       2013-07-11 17:26:38 +08:00
    @yetone 可否請你說明一下這麼做的缺點?

    我已經這樣用很久了,覺得寫起來很清爽哩。
    skydiver
        17
    skydiver  
       2013-07-11 17:38:40 +08:00
    @yetone 短 tag 在新版的 PHP 里面已经默认打开了,说明官方是鼓励这种写法的。
    PrideChung
        18
    PrideChung  
       2013-07-11 18:24:40 +08:00   ❤️ 1
    @yetone 官方文档没有任何关于替代语法的deprecation。http://php.net/manual/en/language.basic-syntax.phptags.php

    如果你是指 short open tag, 同样的官方也没有任何不推荐使用的声明
    http://php.net/manual/en/language.basic-syntax.phptags.php

    唯一能想到的就是 PSR-0 推荐只使用 <?php ?> 和 <?= ?> ,但我觉得在view模板里面用 short open tag没有任何不妥。其他人不推荐使用 short open tag 的原因主要是因为这选项以前不是默认打开的,在虚拟主机上你没法动它的配置。如果你用比较新的PHP版本或者自己搭VPS基本可以无视。
    就像 @skydiver 说的,现在 short_open_tag 已经变成默认打开了,姑且不论PSR,起码PHP官方是不反对使用的。
    PrideChung
        19
    PrideChung  
       2013-07-11 18:25:49 +08:00
    链接发错了,关于替代语法的官方文档:
    http://php.net/manual/en/control-structures.alternative-syntax.php
    isy
        20
    isy  
       2013-07-11 21:00:27 +08:00
    还没开始学 smarty 的话就直接用 twig 吧
    msg7086
        21
    msg7086  
       2013-07-12 14:35:16 +08:00
    @PrideChung 我依稀看到了 PHP also allows for short tags <? and ?> (which are discouraged because ......

    其实之前不推荐使用的主要原因是和xml语法有冲突吧……
    ksc010
        22
    ksc010  
       2013-07-12 14:46:23 +08:00
    用php的话看这一团糟啊
    怪乱
    PrideChung
        23
    PrideChung  
       2013-07-12 14:53:51 +08:00
    @msg7086 居然把这句看漏了……PHP你嘴巴上说不要,又默认给打开了是闹哪样
    summer_charlie
        24
    summer_charlie  
       2013-07-12 16:48:02 +08:00
    laravel 的 blade
    ety001
        25
    ety001  
       2013-07-13 19:08:06 +08:00
    一直原生,沒用過smarty。。
    felixye
        26
    felixye  
       2013-07-13 21:14:55 +08:00
    直接原生的PHP就可以了。
    如果不怎么使用XML的话,可以考虑开短标签 short_open_tag
    dongbeta
        27
    dongbeta  
       2013-07-14 10:08:11 +08:00
    Smarty 诞生和红火的应用背景已经不存在了。所以,别用了。
    zebinary
        28
    zebinary  
       2013-07-14 12:15:07 +08:00
    @PrideChung +1
    我用yii,视图里面都是这样的写
    jingwentian
        29
    jingwentian  
       2013-07-14 17:50:37 +08:00
    @wdd2007 这么巧
    picasso250
        30
    picasso250  
       2014-01-14 16:25:34 +08:00
    @msg7086 <? ?> 就是 <?php ?> 的缩写。

    <?= ?> 是 <?php echo x ?> 的缩写。

    官方鼓励下面的,不鼓励上面的。
    msg7086
        31
    msg7086  
       2014-01-14 16:44:33 +08:00
    @picasso250 请问您想说什么?
    picasso250
        32
    picasso250  
       2014-01-14 17:23:23 +08:00
    @msg7086

    Note:
    This directive also affected the shorthand <?= before PHP 5.4.0, which is identical to <? echo. Use of this shortcut required short_open_tag to be on. Since PHP 5.4.0, <?= is always available.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.