注册的服务不适用于供应商捆绑包

时间:2019-09-30 09:36:07

标签: composer-php symfony-2.8

我有一个使用FOSHttpCacheBundle

的项目

出于某种原因,我需要扩展类TagHandler并使用自己的类,因此我创建了MyTagHandler来扩展TagHandler:

use FOS\HttpCacheBundle\Handler\TagHandler as BaseTagHandler;

class MyTagHandler extends BaseTagHandler
{
...

然后我将其注册在services.xml中:

<service id="fos_http_cache.handler.mytag_handler" class="MyBundle\Cache\MyTagHandler">
    <argument type="service" id="fos_http_cache.cache_manager" on-invalid="null" />
</service>

这很好用,但我希望将其用于我也拥有的其他捆绑软件中。

所以我试图在

中做同样的事情
MyProject/vendor/MyOtherBundle

并执行与上述相同的步骤:

[error] 546#546: *125 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Type error: Argument 1 passed to MyTagHandler::__construct() must be an instance of FOS\HttpCache\CacheInvalidator, null given, called in MyProject/admin/cache/dev/adminDevDebugProjectContainer.php on line 3776 in MyTagHandler.php:36

因此,fos_http_cache.cache_manager基本上已在项目的捆绑软件中被识别和使用,但是在供应商的捆绑软件中使用时却未被识别。

有帮助吗?

0 个答案:

没有答案