Добавление свойств в базовый объект

Задача
Необходимо создать объект и добавить в него свойства, но не определяя его формально как отдельный класс. Это удобно, когда нужна функция, требующая объект с определенными свойствами, например такой, который возвращает функция mysql_fetch_object() или функция imap_header().

Решение
Это делается при помощи встроенного базового класса stdClass:

$pickle = new stdClass;
$pickle->type = 'fullsour';

Обсуждение
Точно так же, как функция array() возвращает пустой массив, создание объекта типа stdClass предоставляет объект без свойств и методов.

Как и в случае объектов, принадлежащих другим классам, можно создавать новые свойства объекта, присваивать им значения и проверять эти свойства:

$guss = new stdClass;
$guss->location = 'Essex';
print "$guss->location\n";$guss->location = 'Orchard';
print "$guss->location\n";
Essex
Orchard

Однако после того как создан экземпляр объекта, методы добавлять нельзя.

Создание объекта типа stdClass полезно, когда нужна функция, принимающая базовый объект, такой, который возвращает функция, делающая выборку из базы данных, но вы не хотите посылать запрос в базу данных.


Например:

function pc_format_address($obj) {
return "$obj->name <$obj->email>";
}
$sql = "SELECT name, email FROM users WHERE id=$id";
$dbh = mysql_query($sql);
$obj = mysql_fetch_object($dbh);
print pc_format_address($obj);
David Sklar

Функция pc_print_address() принимает имя и адрес электронной почты и преобразует эти значения в формат, необходимый для полей To и From в почтовой программе. Ниже показано, как вызывать такую функцию, не вызывая функцию mysql_fetch_object():

$obj = new stdClass;
$obj->name = 'Adam Trachtenberg';
$obj->email = 'adam@example.com';
print pc_format_address($obj);
Adam Trachtenberg

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Динамическая реализация объекта
Динамическое создание класса
Доступ к переопределенным методам
Клонирование объектов
Обнаружение методов и свойств объекта

Вернуться в раздел: PHP / 7. Классы и объекты