Подтвердить что ты не робот

Laravel: узнайте, является ли переменная

Я хочу узнать, является ли переменная коллекцией.

Я не могу использовать is_object(), потому что это будет правда, даже если это не коллекция. Пока я использую это, и он работает:

if(is_object($images) && get_class($images) != 'Illuminate\Database\Eloquent\Collection') {

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

Есть ли у вас идеи?

4b9b3361

Ответ 1

Не могли бы вы использовать

if(is_a($images, 'Illuminate\Database\Eloquent\Collection')) {
    ....do whatever for a collection....
} else {
    ....do whatever for not a collection....
}

Или

if ($images instanceof Illuminate\Database\Eloquent\Collection) {

}

Ответ 2

Используемый класс здесь неверен. В общем смысле вы должны тестировать базовый класс.

use Illuminate\Support\Collection;

....
if($images instanceof Collection) { 
 ....
}

Ответ 3

Просто хочу исправить ошибку, на которую я наткнулся на этот ответ.

Обратите внимание, что instanceof исключает либо (obj), либо имя класса без кавычек

$images instanceof Illuminate\Database\Eloquent\Collection

Кроме того, достаточно интересно, что разница между скоростью и производительностью при использовании instanceof над is_a, но это, вероятно, не относится к вам, если вы похожи на меня и в первую очередь искали ответ на этот вопрос.