@springimport

Проверять ли массив для foreach?

Чтобы избежать исключений и ошибок со времен php 5 всегда делаю проверку вида:
$data = $this->orderRepository->getList();

if ($data) {
    foreach ($data as $datum) {
    }
}


Актуально ли это в php 7.(0,1,2)?

upd: изменил код чтобы было больше понятно.
upd 2: пришел к выводу что метод getList должен возвращать только массив (или коллекцию).
Симфони как пример:
class EntityRepository implements ObjectRepository, Selectable
{
    /**
     * Finds entities by a set of criteria.
     * ...
     * @return array The objects.
     */
    public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
    {
    }
}
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 4
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
$this->orderRepository->getList();

Если getList вернул null вместо пустого итерируемого объекта, то это имхо неправильный дизайн самого getList
Ответ написан
@Batlab
PHP Senior | Python Middle | JS Junior
Нет. Foreach выполняется только тогда, когда в массиве есть данные.
Ответ написан
@springimport Автор вопроса
Тут был ответ Camaro67. Я приведу его потому что уже начал отвечать

Извините, а зачем вы до этого так делали? И чем не нравятся исключения, они для того и созданы? Если с массивом что-то не то, то ловите исключение и обрабатываете его.
Ответ написан
@KTF
По идее getList() должен возвращать коллекцию, в которой должны быть объекты ожидаемого класса (если в цикле будут вызываться какие-то методы объектов, это убережёт от NPE), тогда можно написать так:
$data = $this->orderRepository->getList();

if ($data instanceof OrderCollection) {
    foreach ($data as $datum) {
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы