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

2022-08-30 10:12:50

连接字符串中的变量或使用大括号是否有优点或缺点?

级 联:

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

大括号:

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

就个人而言,我总是连接我的字符串,因为我使用UEStudio,并且在连接时它会以不同的颜色突出显示PHP变量。但是,当变量未分解时,它不会分解。它只是让我的眼睛更容易在长字符串中找到PHP变量,等等。

人们混淆了这一点,认为这是关于SQL的。这不是 这个问题的意义所在。我已经更新了我的示例以避免混淆。


答案 1

如果您查看输出,则以下所有内容都执行相同的操作。

  1. $greeting = "Welcome, " . $name . "!";
  2. $greeting = 'Welcome, ' . $name . '!';
  3. $greeting = "Welcome, $name!";
  4. $greeting = "Welcome, {$name}!";

不应使用选项 1,而应改用选项 2。选项 3 和 4 是相同的。对于简单变量,大括号是可选的。但是如果你使用数组元素,你必须使用大括号;例如: .因此,作为标准,如果使用变量插值,则使用大括号,而不是串联。$greeting = "Welcome, {$user['name']}!";

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

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


答案 2

虽然不处理注入攻击(包括SQLi),但至少应该注意 - 特别是对于PHP开发人员 - 使用上述任何技术而不首先编码和验证所有输入将导致基于注入的攻击。

重要的是要记住编码开始时的安全性 - 而不是所有代码都需要重做以符合安全要求时。或者,当你最终把这场“dang”与“战争打倒,并意识到这并不重要,因为你很容易使用XSS使用任何一种技术,而没有正确编码和验证所有输入。

  1. 使用 urlencode()htmlenities() 进行编码以规范化输入。
  2. 对非字符串使用数据类型,或对要验证的字符串使用字典查找和/或正则表达式。
  3. 利润?

推荐