Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

ParameterBagInterface::get() with ServiceSubscriberInterface

未关闭
#338 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
28/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
php
领域
devtools

调研方向

Start by reproducing the example around ParameterBagInterface::get(), ContainerInterface::get(), and ServiceSubscriberInterface::getSubscribedServices(). Trace how the Symfony extension infers the service type from the subscription, then verify that the container-provided parameter bag reports the expected string return type for get('kernel.project_dir').

由索引模型根据 Issue 内容生成。

描述

Hello,

Since #192 (fix #191), the return type for ParameterBagInterface::get() works with dependency injection but not with ServiceSubscriberInterface :

namespace App\Issue;

use Psr\Container\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Contracts\Service\ServiceSubscriberInterface;

class Issue implements ServiceSubscriberInterface
{
    public function __construct(protected ContainerInterface $container, protected ParameterBagInterface $parameterBag)
    {
    }

    public function test(): void
    {
        $parameterBagFromConstructor = $this->parameterBag;
        // Expected: Dumped type: Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface
        // Observed: Dumped type: Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface
        \PHPStan\dumpType($parameterBagFromConstructor);

        $parameterBagFromContainer = $this->container->get(ParameterBagInterface::class);
        // Expected: Dumped type: Symfony\Component\DependencyInjection\ParameterBag\ContainerBag
        // Observed: Dumped type: Symfony\Component\DependencyInjection\ParameterBag\ContainerBag
        \PHPStan\dumpType($parameterBagFromContainer);

        $parameterFromConstructor = $parameterBagFromConstructor->get('kernel.project_dir');
        // Expected: Dumped type: string
        // Observed: Dumped type: string
        \PHPStan\dumpType($parameterFromConstructor);

        $parameterFromContainer = $parameterBagFromContainer->get('kernel.project_dir');
        // Expected: Dumped type: string
        // Observed: Dumped type: array|bool|float|int|string|UnitEnum|null
        \PHPStan\dumpType($parameterFromContainer);
    }

    public static function getSubscribedServices(): array
    {
        return [
            ParameterBagInterface::class,
        ];
    }
}

Is there a solution for add the support of ParameterBagInterface::get() with ServiceSubscriberInterface ?

Thanks

主要语言
PHP
星标
806
派生
104
平均合并
1 小时 43 分钟
30 天内合并 PR
3

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

phpstan/phpstan-symfony 的其他 Issue

查看 phpstan/phpstan-symfony 的全部 Issue

相似的 Issue

更多 PHP Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。