是什么构成了Sylius资源元数据注册表?

简短版:sylius.resource_registry用数据填充服务的内容是什么?

详细版本:Sylius(使用Symfony构建的PHP电子商务框架)使用Symfony的自定义路由加载系统根据特殊配置值加载一些其他路由。自定义路由加载器类的名称为Sylius\Bundle\ResourceBundle\Routing\ResourceLoader

此资源加载器中有一种逻辑,该逻辑查找别名(别名的示例值),然后使用该别名从注册表中加载元数据

$metadata = $this->resourceRegistry->get($configuration['alias']);

此注册表与标识符的symfony的服务sylius.resource_registry在这里配置

#File: vendor/sylius/sylius/src/Sylius/Bundle/ResourceBundle/Resources/config/services.xml
<service id="sylius.resource_registry" class="Sylius\Component\Resource\Metadata\Registry" public="false" />

注入这里

#File: vendor/sylius/sylius/src/Sylius/Bundle/ResourceBundle/Resources/config/services/routing.xml

<service id="sylius.routing.loader.resource" class="Sylius\Bundle\ResourceBundle\Routing\ResourceLoader" public="false">

    <argument type="service" id="sylius.resource_registry" />

    <argument type="service">

        <service class="Sylius\Bundle\ResourceBundle\Routing\RouteFactory" />

    </argument>

    <tag name="routing.loader" />

</service>

然而,Sylius\Component\Resource\Metadata\Registry类没有构造函数,所以它不是清楚是什么填充私人$元数据阵列。有命名方法addaddFromAliasAndConfiguration其变异〜状态〜增加值的$metadata数组,但目前还不清楚是什么代码调用这些方法,和/或什么sylius配置导致调用这些方法。

在尽可能深入的研究之后,我不确定这个兔子洞的深度如何,所以我转向您。堆栈溢出:是什么sylius.resource_registry用数据填充了服务?


莫回无
浏览 158回答 1
1回答

冉冉说

一个Symfony编译器传递完成它。具体来说:https&nbsp;:&nbsp;//github.com/Sylius/Sylius/blob/master/src/Sylius/Bundle/ResourceBundle/DependencyInjection/Compiler/RegisterResourcesPass.php它从sylius.resourcesSymfony容器参数加载配置,并为在中找到的每个资源的addFromAliasAndConfiguration服务定义添加方法调用。sylius.resource_registrysylius.resources
打开App,查看更多内容
随时随地看视频慕课网APP