Мы все (большинство из нас) знаем, что работа контроллера заключается в обработке запроса, сделанного клиентом (например, веб-браузером), получении модели, представлении представления.
Мой старший разработчик имеет 20-летний опыт работы,вырос на родном PHP, в отличие от меня 4 года опыта, вырос на PHP MVC фреймворках.Я видел, как мой старший разработчик создает объект контроллера в функции действия другого контроллера, потому что он хочет использовать ту же бизнес-логику, что и в следующем примере.
class FooController extend Controller {
public function view($id) {
// Business logic goes here...
// Pseudo code
// If request comes from BarController
// Render no layout, only view template.
// If request comes from browser
// Render view template with layout.
}
}
class BarController extends Controller {
public function viewFoo($id) {
// Create an object of FooController so that we can reuse the business logic of the view function.
$foo = new FooController();
$foo_view = $foo->view($id);
// Render $foo_view template.
}
}
Является ли это хорошей практикой для создания объекта контроллера(в данном случае FooController
) в другом контроллере (в данном случае BarController::viewFoo($id)
), следуя шаблону проектирования MVC?