开发者社区> 问答> 正文

php命名空间和独立的模板引擎的必要性是什么?

php引入命名空间用""分割的语法,算是独创,初用非常不习惯;且,用设计良好的目录结果来管理类,也能实现命名空间管理,个人认为新引入的namespace,used等都是画蛇添足,望指教交流。

再说模板引擎,个人认为模板引擎唯一用处在于:把写界面(模板)和写业务逻辑分离开,使的美工可以独立开发模板,以减少程序员的工作量。但对于美工来说,学习 类似{var}的模板标签,不亚于写php代码直接填充模板的难度;且非php语法的模板需要模板编译的过程,消耗性能。除此之外,想请问各种模板引擎的好处在哪里?

展开
收起
落地花开啦 2016-06-14 17:13:17 2132 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    命名空间用得不多,跳过,就说说模板引擎吧。
    关于模板引擎的使用,其实是回到最原始的需求:无非就是希望尽可能方便地输出html。
    虽然php与其他很多语言不一样,它最初被设计出来的时候就是为了方便在一堆html里头实现一些动态特性(所以其实也有很多项目的确是用php来实现模板的,比如wordpress就是一堆php);但是和smarty(之类的模板引擎)比起来,在直接写html的时候,的确大多数时候还是smarty更方便,因为smarty引擎是针对编写html专门优化的。比如说在smarty里头需要将一个变量进行html转义:
    {$xxx|escape:'html'}
    php呢?
    <?php echo htmlspecialchars($xxx); ?>
    如果改改成引号转义,smarty只需要把 html 改成 quotes 就行了,形式上保持了一致,在编写和阅读上都比较舒服。至于php,当然把 htmlspecialchars 改成 addslashes 也可以,但是php的函数,真的很难用(又难记又难写,很多类似的一组函数,变量的顺序也没有统一的约定,谁用谁恶心)……关于这一点我深有体会,10年的时候自己写的一个项目,觉得不是很有必要用smarty,于是自己用php来实现,写得非常痛苦,如果当时对smarty了解多一点(只是听说过,感觉好像比较重量级就没用),就绝对不可能出现这种情况。
    最近webpy用的比较多,webpy的模板引擎我觉得比smarty用起来更爽的一点也在html转义:它默认就是转义的,需要在页面引用变量的时候,直接 $xxx 就行了。如果不需要转义也很简单: $:xxx。

    2019-07-17 19:38:15
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载