Есть класс, который в конструктор принимает родителя другого класса, правильно ли будет в него просто передать потомка? Или в потомке нужен геттер, который будет возвращать static::class? PHP: class RoutingMiddleware { public function __invoke(Request $request, App $app): Response { $router = new Router($app /* App extends RouteCollector */); // __construct(RouteCollector $routeCollector) $result = $router->matchRoutes($request); $app->mergeMiddleware($result->getMiddleware()); return call_user_func( $app->getContainer()->get($result->getHandler()), $request, $app($request), $result->getParameters() ); } }
Нормально, если классы правильно написаны. Наследование для того и нужно. Принцип подстановки Барбары Лисков - везде, где используется родитель, может использоваться и потомок. Главное, чтоб потомок не урезал функционал родителя, а расширял --- Добавлено --- Другое дело, что лично меня утверждение что "приложение - это коллекция роутов" (наследование - это отношение is a) немного смущает.