В отличие от других отвечающих, я думаю, что я должен прокомментировать ваш дизайн.Вы хотите создать метод, который предоставляет все частные свойства любого объекта.В большинстве случаев объект представляет собой нечто большее, чем просто пакет свойств, поэтому в каких ситуациях вам нужно знать все свойства?И почему вы тогда помечаете их как частные?
Чтобы решить реальную проблему, вы должны взглянуть на общедоступные свойства или частные с геттерами и сеттерами, если вы хотите контролировать входящие и исходящие данные.
Если, однако, вы считаете, что вам нужны все свойства данного объекта (и вы готовы принять «хаки», такие как копирование-программирование, черты и еще много чего), почему бы просто не пометить их как публичные и вызвать get_object_vars()