Нужно ли ставить пробел после ключевого слова $this в ООП PHP в соответствии с PSR?

Я полностью изучил документацию PSR-2 и PSR-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
    }
}

Если оба верны, какой стиль вы рекомендуете?

2 ответа

В упомянутых стандартах нет явных правил для этого, и нет примеров, использующих $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 стиля кодирования, это просто плохая идея.

Другие вопросы по тегам