Я знаю, что это 2-летний вопрос, но я просто хочу отметить, что вы все пропустили вопрос здесь! Все ваши функции не возвращают экземпляр класса, но класс новый . Это включает в себя начальную функцию, отправленную от спрашивающего!
Если вы хотите вернуть инстанцированный класс , вы должны отслеживать ваши классы и их свойства в массиве и возвращать их оттуда, когда вам требуется экземпляр класса, а не переинициализированный класс.
Этот метод также экономит много времени на обработку, если ваши классы выполняют много обработки, когда они созданы. Всегда лучше получить экземпляр, чем создать новый класс, если только вы действительно не хотите, чтобы свойства класса были повторно инициализированы. Обратите внимание!