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
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
<?php
$json = '{"name": "Тест", "active": true}';
$data = json_decode($json);
var_dump(is_object($data)); // По умолчанию объект
echo $data->name;bool(true) Тест
<?php
$mixedArray = [
1,
new DateTime(),
'строка',
['вложенный массив']
];
foreach ($mixedArray as $item) {
if (is_object($item)) {
echo get_class($item) . '\n';
}
}DateTime
<?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')); // truebool(true) bool(true) bool(true)
Аналоги в других языках
Используется функция isinstance() с типом object, но в Python все сущности — объекты. Чаще проверяют на конкретный класс.
value = 'text'
print(isinstance(value, object))True
Оператор typeof возвращает 'object' для объектов, массивов и null. Более точная проверка — instanceof или Object.prototype.toString.call().
console.log(typeof {} === 'object');
console.log(typeof null === 'object'); // Особенность JStrue true
Понятие объектов в SQL отличается. В контексте типов данных аналогов нет. Для работы с JSON есть функция JSON_TYPE().
SELECT JSON_TYPE('{}');OBJECT