Мои MVC-приложения имеют следующую структуру:
Контроллер -> Сервис -> ORM / другая библиотека
Чтобы ответить на ваш вопрос, обычно в вашем контроллере вы будете получать данные формы в виде массива, то есть $ form-> getValues () или чего-то подобного. С точки зрения удобства обслуживания лучше, если ваши службы, за исключением массивов в качестве аргументов, таким образом, если вы добавляете в форму другое поле, вам нужно только обновить форму и службу, ваш контроллер может остаться нетронутым и по-прежнему работать.
Так что я думаю, что пойти с вашим первым примером:
public function savePerson($personArray);
Более того, вам не нужен «жесткий» интерфейс, потому что ваша библиотека форм позаботится о проверке / фильтрации / дезинфекции, поэтому мы можем предположить, что ассоциативный массив будет действительным, плюс определение метода будет смехотворно длинным с named параметры.