Laravel: узнайте, является ли переменная
Я хочу узнать, является ли переменная коллекцией.
Я не могу использовать is_object(), потому что это будет правда, даже если это не коллекция.
Пока я использую это, и он работает:
if(is_object($images) && get_class($images) != 'Illuminate\Database\Eloquent\Collection') {
Но я считаю это настолько уродливым, что я трачу время на то, чтобы спросить вас о другом решении.
Есть ли у вас идеи?
Ответы
Ответ 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
, но это, вероятно, не относится к вам, если вы похожи на меня и в первую очередь искали ответ на этот вопрос.