Вы, конечно, можете сделать это, как RageZ описывает выше, но я не думаю, что я бы рекомендовал это делать. То, что это делает, создает слишком свободный «контракт» между пользователями этого класса - то есть никто действительно не знает, какими свойствами обладает класс.
Вместо того, чтобы определять свойства на лету, я бы поспорил, что у вас есть предопределенный набор «наборов свойств объекта», которые, в свою очередь, могут определять иерархию классов.
Так что вместо того, чтобы делать
- если я получу массив с "a = 2 и b =
3 ", создайте объект с $ obj-> a = 3
и $ obj-b = 3
- если я получу массив с
"c = 5", создайте объект с
$ obj-> c = 5
Сделайте это:
- определить класс для MyObjectOfTypeOne, который имеет свойства $ a и $ b
- определить класс для MyObjectOfTypeTwo со свойством $ c
Затем используйте шаблон Factory для создания правильного типа объекта в зависимости от параметров, передаваемых статическому заводскому методу.