根据 PSR,是否有必要在 OOP PHP 中的 $this 关键字之后放置 space?

Is it necessary to put space after $this keyword in OOP PHP according to PSRs?

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

我的确切问题是根据 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
    }
}

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

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

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

$foo->bar($arg1);

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

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

标准允许

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

这里的空格并没有受到监管,因为有时在编写流畅的接口时,用空格分隔链式调用是有意义的。例如:

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

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

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

但是,您使用空格的示例如下:

$foo -> bar();

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