Skip to content

DX: Type hint kernel get service#440

Open
absumo wants to merge 1 commit intomasterfrom
dx-type-hint
Open

DX: Type hint kernel get service#440
absumo wants to merge 1 commit intomasterfrom
dx-type-hint

Conversation

@absumo
Copy link
Copy Markdown

@absumo absumo commented Apr 10, 2026

Useful when doing: $this->get(Service::class)

Summary by Sourcery

Enhancements:

  • Refine the get method PHPDoc to support generic service type inference when retrieving services by class name.

Useful when doing: $this->get(Service::class)
@absumo absumo requested a review from tijsverkoyen April 10, 2026 15:04
@sourcery-ai
Copy link
Copy Markdown

sourcery-ai bot commented Apr 10, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Adds generics-aware type hints to KernelLoader::get() to improve static analysis and DX when fetching services by class name.

Class diagram for updated KernelLoader get method type hints

classDiagram
    class KernelInterface

    class KernelLoader {
        - KernelInterface kernel
        + __construct(kernel: KernelInterface)
        + get(reference: string) mixed
    }

    KernelLoader --> KernelInterface : depends on
Loading

File-Level Changes

Change Details Files
Make KernelLoader::get() generics-aware so static analyzers can infer service types when fetching by class name.
  • Introduce a @template Service generic type parameter on the method phpdoc
  • Broaden the $reference parameter type from string to string
class-string in the phpdoc
  • Refine the return type in the phpdoc from mixed to mixed

  • Tips and commands

    Interacting with Sourcery

    • Trigger a new review: Comment @sourcery-ai review on the pull request.
    • Continue discussions: Reply directly to Sourcery's review comments.
    • Generate a GitHub issue from a review comment: Ask Sourcery to create an
      issue from a review comment by replying to it. You can also reply to a
      review comment with @sourcery-ai issue to create an issue from it.
    • Generate a pull request title: Write @sourcery-ai anywhere in the pull
      request title to generate a title at any time. You can also comment
      @sourcery-ai title on the pull request to (re-)generate the title at any time.
    • Generate a pull request summary: Write @sourcery-ai summary anywhere in
      the pull request body to generate a PR summary at any time exactly where you
      want it. You can also comment @sourcery-ai summary on the pull request to
      (re-)generate the summary at any time.
    • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
      request to (re-)generate the reviewer's guide at any time.
    • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
      pull request to resolve all Sourcery comments. Useful if you've already
      addressed all the comments and don't want to see them anymore.
    • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
      request to dismiss all existing Sourcery reviews. Especially useful if you
      want to start fresh with a new review - don't forget to comment
      @sourcery-ai review to trigger a new review!

    Customizing Your Experience

    Access your dashboard to:

    • Enable or disable review features such as the Sourcery-generated pull request
      summary, the reviewer's guide, and others.
    • Change the review language.
    • Add, remove or edit custom review instructions.
    • Adjust other review settings.

    Getting Help

    Copy link
    Copy Markdown

    @sourcery-ai sourcery-ai bot left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Hey - I've left some high level feedback:

    • Consider tightening the return phpdoc from mixed|Service to just Service (or a more precise union) if this method is not expected to return non-service types, so that consumers get clearer static analysis guarantees.
    • You may want to rename the template from Service to a more conventional generic name like TService to avoid confusion with an actual Service class and make its role as a template type clearer.
    Prompt for AI Agents
    Please address the comments from this code review:
    
    ## Overall Comments
    - Consider tightening the return phpdoc from `mixed|Service` to just `Service` (or a more precise union) if this method is not expected to return non-service types, so that consumers get clearer static analysis guarantees.
    - You may want to rename the template from `Service` to a more conventional generic name like `TService` to avoid confusion with an actual `Service` class and make its role as a template type clearer.

    Sourcery is free for open source - if you like our reviews please consider sharing them ✨
    Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    None yet

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    1 participant