count () выдает предупреждение, если NULL из PHP 7.2.Есть ли лучший способ исправить это для PHP 5.6+, чем добавить еще одно условие? - PullRequest
0 голосов
/ 23 февраля 2019

Например:

if (count($this->implements) > 0)

выдаст предупреждение.Я всегда могу сделать это:

if (!is_null($this->implements) && count($this->implements) > 0)

Но есть ли более простой и лучший способ исправить это?Он также должен быть полностью обратно совместим с PHP 5.6.

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

count () выдаст предупреждение, если NULL из PHP 7.2.Есть ли лучший способ исправить это, чем добавить другое условие?

ДА

Решение состоит в том, чтобы аргумент был массивом:

if (count((array)$this->implements) > 0)

Это работает на PHP 5 и 7, все версии до 7.2.4 протестированы.Нет записей в журнале ошибок, где найдено.

0 голосов
/ 23 февраля 2019

Вы можете использовать empty().Он вернет true, если свойство не существует (без вызова «Notice») или является ложным (пустой массив - ложным):

if (empty($this->implements) === false) {
}
0 голосов
/ 23 февраля 2019

Выдумка будет использовать null coalesce (??) , чтобы установить его в пустой массив, если null ...

if (count($this->implements??[]) > 0)
...