我正在编写一本关于面向对象PHP的书,并注意到作者在某些情况下使用了复杂的语法。在继承章节中,他使用下面的代码:
// Declare the getSummaryLine() method
function getSummaryLine() {
// Define what the getSummaryLine() method does
$base = "$this->title ( {$this->producerMainName}, ";
$base .= "{$this->producerFirstName} )";
return $base;
}
我的问题是,你为什么不使用:
// Declare the getSummaryLine() method
function getSummaryLine() {
// Define what the getSummaryLine() method does
return "$this->title ( $this->producerMainName, $this->producerFirstName )";
}
因为两者似乎都回归了同样的事情?
如果这很痛苦,请原谅我。我已经阅读了手册中的PHP复杂语法,但它并没有让我更清楚。 它是一个安全问题,风格选择还是完全不同的东西?
答案 0 :(得分:2)
他们都达到了同样的目的,但复合语句的原因与可读性有关。更长的连接字符串更容易阅读,只不过是作者部分的代码味道。
关于这一点的复杂问题与评估有关。使用花括号,你可以这样做:
echo "This works: {$arr['key']}";
答案 1 :(得分:2)
在这种情况下,仅是一种风格/偏好。
作者可能感觉当它跨越多行并且变量在大括号内时更容易阅读。
答案 2 :(得分:1)
所有这些都是有效的。
作者可能只是为了提高可读性而使用串联,长长的代码行也不能很好地用在书中。
当嵌入双引号时,你有时需要在数组/对象的字符串周围加一个{},否则你会看到语法错误。
// Declare the getSummaryLine() method
function getSummaryLine() {
// Define what the getSummaryLine() method does
$base = "$this->title ( {$this->producerMainName}, ";
$base .= "{$this->producerFirstName} )";
return $base;
}
OR
// Declare the getSummaryLine() method
function getSummaryLine() {
// Define what the getSummaryLine() method does
return "{$this->title} ( {$this->producerMainName}, {$this->producerFirstName} )";
}
或者
// Declare the getSummaryLine() method
function getSummaryLine() {
// Define what the getSummaryLine() method does
return $this->title.'( '.$this->producerMainName.', '.$this->producerFirstName.' )';
}