Можете ли вы сделать то, что вам нужно, создав новый и скопировав значения?
$foo2 = new FooFlatFile;
$foo2 = foo->bar;
Если не получается, что вам нужно, пожалуйста, дайте нам более подробную информацию.
Ответ на комментарий:
Если вы планируете делать это часто, было бы легко создать функцию-член, которая будет возвращать все члены в каком-либо массиве или структуре. Однако в этот момент вам действительно нужно спросить себя: «Почему я это делаю?» Другой респондент говорит, что если вы регулярно хотите это делать, вы очень плохо спланировали свои занятия.
Если у вас есть два класса, между которыми вы хотите переключиться, удалите то, что их разделяет, и создайте один класс. Либо они в основном одинаковы, и в этом случае вы могли бы сойти с рук, переключаясь между ними, но вам гораздо лучше обслужить, сделав всего один урок.
Или они принципиально отличаются друг от друга, и в этом случае вам все еще нужны два класса. Если у вас есть база данных, и вы пытаетесь превратить ее в плоский файл, вам нужна функция экспорта, которая переводит базу данных в простые данные. Динамически изменяющиеся классы были бы похожи на использование Блокнота для открытия файла Oracle: он не давал бы данные осмысленным и удобным способом. Чтобы переходить между ними, вы пишете функции экспорта и импорта, которые используют ту же структуру данных, что и другие. Вы создаете новый, экспортируете из старого, импортируете в новый и удаляете старый.
Я, честно говоря, не уверен, что еще сказать, потому что я не могу представить сценарий, в котором было бы целесообразно сделать это. Если бы вы могли дать более подробную информацию о том, что вы пытаетесь решить, я мог бы предложить лучший совет.