【问题标题】:How to replace <?php echo with curly brace({{ }})如何用大括号替换 <?php echo({{ }})
【发布时间】:2019-03-13 02:13:03
【问题描述】:

我想清理我的 php 文件。我真的很喜欢刀片模板如何使用花括号来显示 php 变量 {{ $user }} https://laravel.com/docs/5.8/blade#displaying-data

有没有办法在不使用刀片模板的情况下使用类似的功能。使用&lt;?php echo $user ?&gt; get 非常重复。

【问题讨论】:

  • 不,如果你想要一个模板引擎,使用一个,你可以启用short tags,如果你愿意,可以将它缩短为&lt;?= stuff ?&gt;
  • 你为什么不想使用刀片?它提供了您想要的确切功能
  • 模板引擎有很多。我不太确定 Laravel 是如何工作的,但我想不出他们为什么会阻止你使用 Blade 之外的另一个。你也可以看看树枝!如果你想自己做一个,你也可以阅读他们的代码,因为我相信它一定很有启发性!
  • 您可以使用刀片模板,也可以使用 = $user; 之类的排序标签?>

标签: php laravel php-7 laravel-blade


【解决方案1】:

如果不使用模板引擎,这在 PHP 中是不可能的,因为它是一种不同的语法。无论如何,在我看来,有时使用模板引擎并不是最好的主意因为 PHP 已经是一种模板引擎

您似乎关心的只是在刀片中回显变量的简短语法

{{ user }}

这与 PHP 模板引擎本身提供的语法一样短

<?= $user ?>

当然,Laravel(和类似的)有充分的理由使用像刀片这样的模板引擎 - 以便分离控制器、逻辑和视图(例如,视图可以由非程序员设计人员制作)。

更新(感谢 cmets): 上面提供的代码与模板引擎不完全相同(作为附加层)可以照顾例如转义变量,这增加了代码的安全性。

由于 OP 的代码已经用 echo 构建,他只是在寻找替代品,我没有提到这一点,但它的一个显着区别是如果不使用,你必须自己处理一些事情。

【讨论】:

  • 我不得不对此投反对票,因为“使用模板引擎不是最好的主意”。 &lt;?= 在这里相同。 Laravel 的{{ }} 应用了自动转义,这在很大程度上防止了 Blade 中意外的 XSS 漏洞。这只是一个小例子,说明了为什么模板引擎可以带来显着的好处。
  • @ceejayoz 那又怎样?如果您需要自动转义,请在变量周围放置一个转义函数(或者您可能已经在之前的代码中对其进行了转义?)。但在很多情况下你并不需要它。仅仅因为 laravel 添加了一些糖来回声,这并不意味着这是一个糟糕的答案。
  • “这与 PHP 模板引擎本身提供的语法一样短” 不准确。正如@ceejayoz 指出的那样,刀片自动应用字符转义。提供实际上不准确的信息是不好的答案。
  • 我已经编写 PHP 代码大约二十年了。当然,你可以在它周围放置一个转义函数。人们通常 - 由于不安全的编码实践,我见过很多 XSS 漏洞。因此,我认为 Laravel 内置于框架最佳实践中的“除非你特别关闭它,否则总是逃跑”的方法是非常有益的。
  • @jfadich 感谢通知。更新以避免潜在的误解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2020-12-13
相关资源
最近更新 更多