搜索
首页后端开发php教程PHP 模板引擎有多大意义?

现在有很多 PHP 模板引擎,并且有不同的模板语言,我一直想不通这样能带来多大的好处,所以我想听听大家的意见。

回复内容:

以前 PHP 的 OO 特性不太好,没有一些优雅的技术手段来将应用逻辑和展示分开,所以发展出了很多模板技术。但现在得益于对 OO 特性的支持,MVC 架构的流行,已经可以丢掉模板引擎了(基于历史原因除外)。Zend Framework 更是直接推荐使用原生 PHP 脚本作为模板引擎,因为 PHP 本来就支持代码与 HTML 的混合书写,同时开发者也更不需要学习新的模板语法。 以前对模版引擎,我也觉得没多大意义,毕竟这事php自己也可以做的很好
但看了twig这款模版引擎之后,我的观点有了些许变化
这款模版引擎在我看来最大的好处就是可以提高套模板的效率
简洁的语法,常用的标签、过滤器、函数,又方便扩展。总之,套模板再也不用写那冗长的php代码了。
要是php也能出个coffeescript就好了。 MVC分开的话,V已经没有意义跑模版引擎了,原生最好。
以前主要是代码分离,方便前端开发。 个人认为模版引擎对于php还是有必要的。
  1. 安全,比如默认转义输出
  2. 规范,防止团队中有人在视图中写大量的逻辑代码
  3. 性能,据说可以提高性能
  4. 可读,个人认为twig或者laravel的blade引擎比php可读性好
个人一直持反对模板引擎的观点。
主要是PHP本身已经可以实现模板引擎的功能了。或者说PHP本身就是一个模板引擎。至于给非后端人员使用,其实这事也有点牵强。确实直接使用PHP书写模板容易引起一些不规范的操作,但是这事其实是靠规范约束的,不是靠技术框架约束的,几乎所有的模板引擎都提供了运行原生代码的能力,页面开发者遇到绕不过去的点仍然会使用原生的PHP代码,然后一样可以埋雷。
良好的规范、共识和review机制来解决这类问题更有效。PHP本身就是一个非常随意的语言,你可以在任何地方取得很多模块本不应该做的事。MVC为了解耦,但是仍然很多人在model和view里读$_GET,在controller甚至view里写sql。在controller和model里写html。这种事一个MVC根本搞不定,否则这个MVC就是一个不具有普适性的MVC了。

综其原因,原生解决不了的问题,模板一样解决不了,而且还要增加学习成本和开发成本,承担不易调试的麻烦,模板引擎本身有bug的风险,多解决一个依赖的成本等等。 模板设计的意义也是目的就是为了程序逻辑与页面展现分离,便于程序员和美工分工协作而又不会互相干扰。

然而早期的PHP模板实际上是按照程序员的思维逻辑产生的一套机制,在这种机制下,包括在现在所谓的“原生”机制下,页面美工仍然需要面对包含着大量代表程序逻辑的html。不能算作是彻底的分离。

要说意义有多大,相对于曾经的ASP社区,PHP社区至少一直在努力探索着这一Web开发的核心问题,推动着这一问题的不断思考和挖掘。

要真正搞好Web开发的MVC分离,不能只站在程序员的角度思考问题,必须考虑Web开发的全程工作分工,分工清晰了,分离的方案就容易确定。
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

PHP电子邮件安全性:发送电子邮件的最佳实践PHP电子邮件安全性:发送电子邮件的最佳实践May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

您如何优化PHP应用程序的性能?您如何优化PHP应用程序的性能?May 08, 2025 am 12:08 AM

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

PHP中的依赖注入是什么?PHP中的依赖注入是什么?May 07, 2025 pm 03:09 PM

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

最佳PHP性能优化技术最佳PHP性能优化技术May 07, 2025 pm 03:05 PM

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

PHP性能优化:使用OpCode缓存PHP性能优化:使用OpCode缓存May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器