Сокращение если безумие, можно ли еще шустрее переписать? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть эта структура (в настоящее время работаю над PHP 7.4)

/** @var bool $shouldBeEmpty */
/** @var array $array */
if ($shouldBeEmpty) {
    $array = [];
} else {
    $array = $data['some_data'] ?? [];
}

Ее можно было бы переписать в одну строку вот так

$array = $shouldBeEmpty ? [] : $data['some_data'] ?? [];

Вопрос - возможно ли это избавьтесь от одного [] и сделайте то же самое только с одним [].

Присвоение [] переменной или замена одного array() не будет иметь места.

Есть ли единственный вариант, что $ shouldBeEmpty должен быть пустым / непустым массивом, чтобы я мог его повторно использовать? Логическое значение в любом случае не сработает?

1 Ответ

0 голосов
/ 10 июля 2020

На самом деле пример довольно ужасен, но в реальном классе он выглядит немного лучше.

Кроме того, этот код, конечно, выполняется в OOP, и будет иметь смысл использовать пример из class.

Как и то, что я понял, я могу просто использовать предварительно заданное значение из свойства класса, поэтому мне не нужно его менять, если мне это не нужно. Итак, вот пример, которым я вполне доволен.

class MyClass
{
  protected $collectedData = [];

  public function __construct($data)
  {
    if (!$data['shouldBeEmpty']) {
      $this->collectedData = $data['some_data'] ?? [];
    }
  }
}
...