Як зазначали інші, ви можете використовувати stdClass. Однак я думаю, що це чистіше без (), як:
$obj = new stdClass;
Однак, виходячи з питання, здається, що ви дійсно хочете - це можливість додати властивості до об'єкта на льоту. Для цього вам не потрібно використовувати stdClass, хоча ви можете. Дійсно, ви можете використовувати будь-який клас. Просто створіть об’єкт об'єкта будь-якого класу та починайте налаштування властивостей. Мені подобається створювати власний клас, ім'я якого просто o з деяким базовим розширеним функціоналом, який я люблю використовувати в цих випадках і приємно для поширення з інших класів. В основному це мій власний базовий клас об'єктів. Мені також подобається мати функцію, просто названу o (). Так:
class o {
// some custom shared magic, constructor, properties, or methods here
}
function o() {
return new o;
}
Якщо вам не подобається мати власний тип базового об'єкта, ви можете просто мати o () повернення нового stdClass. Однією з переваг є те, що o легше запам’ятати, ніж stdClass, і він коротший, незалежно від того, використовуєте ви його як ім'я класу, ім'я функції або обох. Навіть якщо ви не маєте коду всередині свого класу o, запам'ятовувати його все ж простіше, ніж незручно написані великими літерами та названими stdClass (що може викликати ідею "класу захворювань, що передаються статевим шляхом"). Якщо ви налаштовуєте клас o, ви можете знайти використання функції o () замість синтаксису конструктора. Це нормальна функція, яка повертає значення, яке є менш обмеженим, ніж конструктор. Наприклад, ім'я функції може бути передано як рядок до функції, яка приймає параметр, що може викликати. Функція також підтримує ланцюжок. Тож ви можете зробити щось на кшталт:
Це чудовий початок для базової "мови" для побудови інших мовних шарів, при цьому верхній шар записується повністю внутрішніми DSL. Це схоже на стилі розробки, і PHP підтримує його набагато краще, ніж більшість людей усвідомлює. Я усвідомлюю, що це дещо дотична для питання, але питання стосується того, що, на мою думку, є базовим для повного використання потужності PHP.
$var = (object) (boolean) (string) (int) (array) new StdClass;
Ви знаєте, щоб бути в безпеці.