PHP双引号字符串中的括号

5

这更多是一个最佳实践的问题。

我想知道在双引号字符串中使用大括号来表示变量是否是一种好的做法。

例如:

<?php
$Variable = 'a variable';
$SingleQuotedString = 'Single quoted string with ' . $Variable;
// Single quoted string with a variable

$DoubleQuotedString = "Double quoted string with $Variable";
// Double quoted string with a variable

$DoubleQuotedStringWithBrackets = "Double quoted string with {$Variable} in brackets.";
// Double quoted string with a variable in brackets.
?>

它不会改变简单测试中的输出或代码,显然是可行的。我很困惑,因为没有多少人这样做,我也没有看到相关建议或反对意见,并且我一直都在使用它们。

感谢任何反馈!


可能是PHP中单引号和双引号字符串的区别是什么?的重复问题。 - JavaCake
怎么做?他们的回答似乎都不太合适,是的,我看到一些带括号的,但除此之外,没有人真正深入地回答了我想知道的问题。 - Toxic
5个回答

13

花括号的作用是允许使用数组和对象,即:

$string = "my array value: {$foo['bar']}";
或者
$string = "my object value: {$foo->bar}";

哦,这样解释更好。谢谢! - Toxic

5

最快、最干净的版本是第一个。在双引号字符串中使用变量......对我来说感觉不太对。

$SingleQuotedString = 'Single quoted string with ' . $Variable;

唯一我能想到它有用的情况是当你拥有一个具有不同大小字体的文本段落时。
$string = "with a {$load} of {$variables} in {one} {sentence}!";

而且如果不这样做,可读性会受到太大的影响。

1
那是个人偏好。当你需要将每个单词作为字符串输出时,你会更喜欢插值。 - Jessica
1
这个微优化的梗在古老的PHP版本中仍然适用。除非你的代码中有十亿个字符串连接,或者实际上在分析器中看到它与循环或SQL查询相比,否则这并不重要。 - mario
2
嗯...我曾经在一家公司工作过,开发了一个非常依赖性能的拍卖软件。我们甚至不能使用 includes。:P - Markus Kottländer
无论是不是“过去的日子”了,做一些小而简单的事情总是一个好习惯,比如在不需要 PHP 解析字符串进行变量替换时使用 ' 而不是 "。 - Zarathuztra
1
除非以可读性为代价,否则请勿更改@Zarazthuztra。 - Ezequiel Muns
显示剩余3条评论

3

如果您的变量后面没有空格,需要使用括号。

$a = 1;
$aa = 2;
echo "$aaa"; // prints nothing but a notice cause $aaa is not defined
echo "{$a}aa"; // prints 1aa
echo "{$aa}a"; // prints 2a

或者如果你想调用一个对象方法

echo "{$myObject->myMethod()}"; // fatal error cause $myObject is null ;) otherwise it works just fine

否则,您可以使用括号或不使用括号。
  • 如果字符串中没有变量,则单引号更快。
  • 访问数组值或对象属性不需要使用括号。但是,这样可能更容易阅读。

2

在字符串中使用括号引用变量的真正原因是为了访问数组或对象中的值。例如:

echo "The result is {$res['foo']}"

或者

echo "The result is {$res->foo}"

如果您没有使用括号,则无法正常工作。如果您发现使用带引号的括号字符串更容易阅读,则可以使用它们。否则,仅在需要时(解除数组或对象引用)使用它们。


我通常不需要调用数组值或对象,直到我开始使用DOMDocument。感谢您的反馈 :) - Toxic

2

这些都是“样式选择”,因为只要您遵循规则,最终将得到相同的结果。每个选择都会牺牲可读性、可编辑性、抗错误性以及极小的速度。没有被广泛接受的“最佳实践”,只有开发人员偏好,他们会热情地捍卫。

我认为单引号形式啰嗦、冗长且较少美观。我倾向于仅在短字符串中使用它。

对于较长的字符串,我更喜欢双引号,因为它们可以让我以不那么容易出错的方式移动插值到字符串中。当我需要显式或需要数组或对象内部的值时,我使用括号,但始终倾向于简洁明了。

一般来说,保持一致性以最大化团队生产力可能是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接