使用类属性时PHP复杂语法(花括号)

时间:2012-11-25 18:16:36

标签: php curly-braces

我正在编写一本关于面向对象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复杂语法,但它并没有让我更清楚。 它是一个安全问题,风格选择还是完全不同的东西?

3 个答案:

答案 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.' )';
}