我应该在字符串中使用大括号或连接变量吗?

直截了当的问题:在字符串中串联变量或使用花括号代替是有利还是不利?

级联:

$greeting = "Welcome, ".$name."!";

大括号:

$greeting = "Welcome, {$name}!";

就个人而言,我总是将字符串串联在一起,因为我使用UEStudio,并且在串联时会突出显示不同颜色的PHP变量。 但是,如果不分解变量,则不会。 它只是使我的眼睛更容易找到长字符串等中的PHP变量。

编辑:人们对此感到困惑有关SQL。 这不是这个问题的意思。 我已经更新了示例以避免混淆。

Michael Irigoyen asked 2020-07-23T17:52:34Z
3个解决方案
45 votes

如果查看输出,则以下所有内容均相同。

  1. \t
  2. \t
  3. \t
  4. \t

您不应使用选项1,而应使用选项2。 选项3和4相同。 对于简单变量,花括号是可选的。 但是,如果使用数组元素,则必须使用花括号; 例如:\t。因此,作为标准,如果使用变量插值而不是级联,则使用花括号。

但是,如果使用诸如制表符(\t),换行符(\n)之类的字符,则它们必须在双引号内。

通常,变量插值比较慢,但是如果要串联的变量太多,则串联也可能较慢。 因此,要根据其他字符中的多少个变量来决定。

Amil Waduwawara answered 2020-07-23T17:53:02Z
3 votes

尽管不涉及注入攻击(包括SQLi),但至少应注意-特别是对于PHP开发人员-使用上述任何技术而不先进行编码和验证所有输入将导致您遭受基于注入的攻击。

在编码开始时记住安全性很重要,而不是在需要重做所有代码以符合安全性要求时结束时记住安全性。 或者,当您最终弄清此问题时,意识到并没关系,因为您可以使用任何一种技术对XSS敏感,而无需正确编码和验证所有输入。

  1. 使用urlencode()或htmlenities()进行编码,以标准化输入。
  2. 将数据类型用于非字符串或字典查找和/或正则表达式用于字符串以进行验证。
  3. 利润?
It DoesntMatterAnyway answered 2020-07-23T17:53:40Z
2 votes

使用预编译的PHP(字节码缓存)没有什么区别。

PHP 5.5(Zend Optimizer +)附带了此功能。

alexwenzel answered 2020-07-23T17:54:05Z
translate from https://stackoverflow.com:/questions/4676417/should-i-use-curly-brackets-or-concatenate-variables-within-strings