Посмотрите шаблоны Transaction Script и PageController .Сценарий транзакции является самым базовым из шаблонов доменной логики и подходит для небольших приложений.Целью PageController является обработка ввода из вашего пользовательского интерфейса.Если вы хотите, чтобы это была одна команда, ничего страшного.Вы могли бы сделать
class PostAddController implements RequestHandler {
public function handle($request) {
$post = filter_input(INPUT_POST, 'post', FILTER_SANITIZE_SPECIAL_CHARS);
$model = new PostAddTransactionScript;
$model->process($post);
include 'postAddViewScript.php';
}
}
PostAddTransactionScript затем записал бы $ postData в базу данных или что-то еще, что он должен делать.Упрощенный пример, приведенный выше, будет по-прежнему соответствовать MVC, поскольку он сохраняет логику модели внутри сценария транзакции и обработку ввода внутри уровня представления.
Организуете ли вы логику обработки ввода в один класс Controller или множествоменьшие команды зависит от вас.Группировка обязанностей просто имеет больше смысла, особенно если вам нужно разделить состояние или общие функции между командами.
Что касается вашего примера, я бы лучше использовал шаблон стратегии и имел бы Post_Parentиспользуйте команду вместо команды, использующей Parent, например,
$commander = new PostCommander;
$commander->setStrategy(new PostAddCommand);
$commander->handle($_POST);
В любом случае, я согласен с остальными, что ваши контроллеры должны быть тонкими, а модель должна выполнять основную работу.