Фактично не потрібно повертати екземпляр \Magento\Framework\View\Result\Page. execute, Як очікується, повертає екземпляр класу , який реалізує інтерфейс \Magento\Framework\Controller\ResultInterface.
\Magento\Framework\View\Result\Pageце лише одне можливе повернення.
Інші можливі прибутки є
\Magento\Framework\Controller\Result\Redirect
\Magento\Framework\Controller\Result\Raw
\Magento\Framework\View\Result\Layout
\Magento\Framework\Controller\Result\Forward
\Magento\Framework\Controller\Result\Json
а можуть бути й інші.
погляньте на метод Magento\Framework\App\Action\Action::dispatch().
Це повинно повернути екземпляр \Magento\Framework\Controller\ResultInterfaceі на основі результату вжити різних дій, знову ж таки викликаючи методи, оголошені в ResultInterface.
Цей dispatchметод викликає, $result = $this->execute();який є executeметодом дії контролера. Тож я думаю, що це для послідовності та полегшення введення іншої поведінки для дії контролера. Вам просто потрібно додати новий клас, який реалізується, ResultInterfaceі все це буде оброблятися рамкою.