直截了当的问题:在字符串中连接变量或使用花括号是否有利有弊?
级联:
$greeting = "Welcome, ".$name."!";
大括号:
$greeting = "Welcome, {$name}!";
就个人而言,我总是连接我的字符串因为我使用UEStudio并且它在连接时突出显示PHP变量的不同颜色。但是,当变量未被分解时,它不会。它只是让我的眼睛更容易在长字符串中找到PHP变量等。
编辑:人们对于关于SQL的问题感到困惑。这不这个问题是关于什么的。我已经更新了我的例子以避免混淆。
答案 0 :(得分:44)
如果查看输出,以下所有内容都会相同。
$greeting = "Welcome, " . $name . "!";
$greeting = 'Welcome, ' . $name . '!';
$greeting = "Welcome, $name!";
$greeting = "Welcome, {$name}!";
您不应该使用选项1,而是使用选项2。选项3和4都是相同的。对于一个简单的变量,大括号是可选的。但是如果你使用数组元素,你必须使用大括号;例如:$greeting = "Welcome, {$user['name']}!";
。因此,作为标准,如果使用变量插值,则使用大括号,而不是连接。
但是如果使用制表符(\t
),换行符(\n
)等字符,它们必须在双引号内。
通常,变量插值很慢,但如果连接的变量太多,则连接也可能会变慢。因此,根据其他字符中的变量数来决定。
答案 1 :(得分:3)
虽然没有处理注入攻击(包括SQLi),但至少应该注意 - 特别是对于PHP开发人员 - 使用上述任何技术而不首先编码并验证所有输入引导你进行基于注射的攻击。</ p>
在编码开始时记住安全性非常重要 - 而不是在需要重做所有代码以符合安全要求时才结束。或者,当你最终得到这个“对战”战争并且意识到它并不重要,因为你很容易使用任何一种技术而没有正确编码和验证所有输入的XSS。
答案 2 :(得分:2)
使用预先编译的PHP(字节码缓存),它没有任何区别。
此功能随PHP 5.5(Zend Optimizer +)一起提供。