За последние 24 часа нас посетили 38198 программистов и 8316 роботов. Сейчас ищут 1730 программистов ...

Как правильно передать родителя?

Тема в разделе "PHP для новичков", создана пользователем Вероломство, 12 авг 2023.

  1. Вероломство

    Вероломство Активный пользователь

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    Есть класс, который в конструктор принимает родителя другого класса, правильно ли будет в него просто передать потомка?

    Или в потомке нужен геттер, который будет возвращать static::class?

    PHP:
    1. class RoutingMiddleware
    2. {
    3.     public function __invoke(Request $request, App $app): Response
    4.     {
    5.         $router = new Router($app /* App extends RouteCollector */); // __construct(RouteCollector $routeCollector)
    6.  
    7.         $result = $router->matchRoutes($request);
    8.  
    9.         $app->mergeMiddleware($result->getMiddleware());
    10.  
    11.         return call_user_func(
    12.             $app->getContainer()->get($result->getHandler()),
    13.             $request,
    14.             $app($request),
    15.             $result->getParameters()
    16.         );
    17.     }
    18. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Нормально, если классы правильно написаны. Наследование для того и нужно. Принцип подстановки Барбары Лисков - везде, где используется родитель, может использоваться и потомок. Главное, чтоб потомок не урезал функционал родителя, а расширял
    --- Добавлено ---
    Другое дело, что лично меня утверждение что "приложение - это коллекция роутов" (наследование - это отношение is a) немного смущает.
     
    Вероломство нравится это.