Is object: примеры (PHP)

Функция is_object в PHP для проверки объектов
Раздел: Работа с переменными
is_object(mixed $value): bool

Функция is_object в PHP

Описание

Функция is_object() определяет, является ли переменная объектом. Она возвращает true, если тип проверяемого значения — object, иначе — false.

Когда используется

Функция применяется для проверки типа данных перед операциями, специфичными для объектов: вызовом методов, доступом к свойствам, проверкой принадлежности к классу.

Аргументы

Функция принимает один обязательный параметр:

  • $value — проверяемая переменная.

Примеры использования

Базовые проверки

Проверка обычного объекта:

<?php
class Example {}
$obj = new Example();
var_dump(is_object($obj));
bool(true)

Проверка не объекта:

<?php
$var = 'строка';
var_dump(is_object($var));
bool(false)
Специальные случаи

Проверка анонимного класса:

<?php
$anon = new class {};
var_dump(is_object($anon));
bool(true)

Похожие функции в PHP

  • gettype() — возвращает строку с типом переменной. Менее эффективна для строгих проверок, но дает больше информации.
  • instanceof — оператор проверяет, является ли объект экземпляром определенного класса или интерфейса. Позволяет учитывать иерархию наследования.
  • is_a() — функция, аналогичная оператору instanceof, но может работать со строковыми именами классов.
  • method_exists() / property_exists() — проверяют наличие конкретного метода или свойства, что полезно после подтверждения, что переменная является объектом.

Использовать is_object() предпочтительнее для первоначальной общей проверки типа, а instanceof — для проверки на конкретный класс.

Типичные ошибки

Проверка неинициализированной переменной
<?php
var_dump(is_object($undefinedVar));
bool(false)
// И также генерируется предупреждение E_WARNING
Некорректное использование с ресурсами
<?php
$handle = fopen('php://temp', 'r');
var_dump(is_object($handle)); // Ресурсы не являются объектами
bool(false)
Путаница с типами
<?php
$std = new stdClass();
$std->prop = function() {}; // В свойстве может быть callable объект Closure
var_dump(is_object($std->prop));
bool(true)

Изменения в PHP

  • В PHP 7.2 функция перестала выдавать предупреждение, если не переданы аргументы. Теперь возвращает false.
  • В PHP 8.0 поведение функции с ресурсами не изменилось, но многие ресурсы были преобразованы в объекты. Например, модули Curl, GD теперь возвращают объекты.

Расширенные примеры

Итерация по свойствам объекта
Пример php
<?php
class User {
    public $name = 'Alex';
    private $id = 101;
}

$user = new User();
if (is_object($user)) {
    foreach ($user as $key => $value) {
        echo "$key: $value\n";
    }
}
name: Alex
Работа с JSON
Пример php
<?php
$json = '{"name": "Тест", "active": true}';
$data = json_decode($json);
var_dump(is_object($data)); // По умолчанию объект

echo $data->name;
bool(true)
Тест
Проверка в структурах данных
Пример php
<?php
$mixedArray = [
    1,
    new DateTime(),
    'строка',
    ['вложенный массив']
];

foreach ($mixedArray as $item) {
    if (is_object($item)) {
        echo get_class($item) . '\n';
    }
}
DateTime
Сравнение с instanceof
Пример php
<?php
class A {}
class B extends A {}

$b = new B();
var_dump(is_object($b));        // true
var_dump($b instanceof A);     // true (наследование)
var_dump(is_a($b, 'A'));       // true
bool(true)
bool(true)
bool(true)

Аналоги в других языках

Python

Используется функция isinstance() с типом object, но в Python все сущности — объекты. Чаще проверяют на конкретный класс.

value = 'text'
print(isinstance(value, object))
True
JavaScript

Оператор typeof возвращает 'object' для объектов, массивов и null. Более точная проверка — instanceof или Object.prototype.toString.call().

console.log(typeof {} === 'object');
console.log(typeof null === 'object'); // Особенность JS
true
true
MySQL

Понятие объектов в SQL отличается. В контексте типов данных аналогов нет. Для работы с JSON есть функция JSON_TYPE().

SELECT JSON_TYPE('{}');
OBJECT

PHP is_object function comments

En
Is object Finds whether a variable is an object