1

我完全研究了PSR-2PSR-12文档,但没有找到任何关于是否在 $this 关键字之后放置任何空格的解释。

我的确切问题是,根据 PSR,以下哪种风格更正确:

return $this->name;

或者

return $this -> name;

要比较的示例代码如下:

class Car
{
    public $name;
    public function getName()
    {
        return $this->name; // I've always seen this style (no spaces)
    }
}

和。。比较:

class Car
{
    public $name;
    public function getName()
    {
        return $this -> name; // Includes spaces
    }
}

两者都正确吗?如果是这样,是否有理由使用一个而不是另一个?

4

2 回答 2

1

在提到的标准中没有明确的规则,也没有$this特别使用的示例,但是还有很多其他使用->操作符的示例,并且它们始终显示它,周围没有空格。

例如,在“方法和函数调用”(PSR-2 §4.6 / PSR-12 §4.7)下:

$foo->bar($arg1);

$foo->bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);

这并不意味着该标准需要这种风格,但它只是一小部分证据表明这是大多数 PHP 开发人员自然所期望的。

于 2022-02-08T11:25:20.957 回答
1

两者都是标准允许的。

->任何 PSR 标准都不禁止在对象运算符 ( ) 周围使用“空格” 。这是合法的。

围绕这一点的空格并没有受到监管,因为有时在编写流畅的接口时,将链式调用与空格分开是有意义的。例如:

$foo->bar()
    ->baz()
    ->fizz()
    ->fizzBuzz();

禁止这样做并没有特别的意义。

虽然可以添加额外的语言来解释这种情况和其他情况,但事实并非如此。也许委员会没有考虑到它,也许它被认为是 PHP 社区的普遍做法将占上风而不需要额外的标准。为什么他们不添加这种特定语言并不是特别重要。

但是,您使用这样的空格的示例:

$foo -> bar();

只是难以阅读并且没有任何优势。虽然不违法,也不违反编码风格的 PSR,但这只是个坏主意。

于 2022-02-08T12:14:33.513 回答