如何使用 Symfony 依赖注入容器配置 Doctrine 2.1?

发布于 2024-12-05 00:47:58 字数 1484 浏览 0 评论 0原文

您好,我正在使用 Symfony DIC 来配置 Doctrine。 这与 Doctrine 2.0 完美配合,但想要升级到 v2.1,需要添加一些额外的配置,如下所示。

$reader = new \Doctrine\Common\Annotations\AnnotationReader();

$reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
// new code necessary starting here
$reader->setIgnoreNotImportedAnnotations(true);
$reader->setEnableParsePhpImports(false);

我对上述代码的 DIC 配置没有出现问题:

<service id="doctrine.metadriver" class="Doctrine\ORM\Mapping\Driver\AnnotationDriver">
    <argument type="service">
        <argument type="service" id="doctrine.cache" />
        <service class="Doctrine\Common\Annotations\AnnotationReader">
            <call method="setDefaultAnnotationNamespace">
                <argument>Doctrine\ORM\Mapping\</argument>
            </call>
            <call method="setIgnoreNotImportedAnnotations">
                <argument>TRUE</argument>
            </call>
            <call method="setEnableParsePhpImports">
                <argument>FALSE</argument>
            </call>
        </service>
    </argument>
    <argument>%doctrine.entity.path%</argument>
</service>

我的问题是如何将以下内容添加到 DIC 配置中?

$reader = new \Doctrine\Common\Annotations\CachedReader(
    new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache()
);

Hi I'm using Symfony DIC to configure Doctrine.
This was working perfectly fine with Doctrine 2.0, but wanted to upgrade to v2.1 and needed to add some extra configuration as seen below.

$reader = new \Doctrine\Common\Annotations\AnnotationReader();

$reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
// new code necessary starting here
$reader->setIgnoreNotImportedAnnotations(true);
$reader->setEnableParsePhpImports(false);

My DIC configuration for the above code without my problem:

<service id="doctrine.metadriver" class="Doctrine\ORM\Mapping\Driver\AnnotationDriver">
    <argument type="service">
        <argument type="service" id="doctrine.cache" />
        <service class="Doctrine\Common\Annotations\AnnotationReader">
            <call method="setDefaultAnnotationNamespace">
                <argument>Doctrine\ORM\Mapping\</argument>
            </call>
            <call method="setIgnoreNotImportedAnnotations">
                <argument>TRUE</argument>
            </call>
            <call method="setEnableParsePhpImports">
                <argument>FALSE</argument>
            </call>
        </service>
    </argument>
    <argument>%doctrine.entity.path%</argument>
</service>

My question is how can I add the following to the DIC configuration?

$reader = new \Doctrine\Common\Annotations\CachedReader(
    new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache()
);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春夜浅 2024-12-12 00:47:58

它可能不是一个完全有效的配置,但应该会给您一些提示:

<service id="annotations.base_reader" 
    class="Doctrine\Common\Annotations\AnnotationReader" 
    public="false">
        <call method="setDefaultAnnotationNamespace">
            <argument>Doctrine\ORM\Mapping\</argument>
        </call>
        <call method="setIgnoreNotImportedAnnotations">
            <argument>TRUE</argument>
        </call>
        <call method="setEnableParsePhpImports">
            <argument>FALSE</argument>
        </call>
    </argument>
</service>

<service id="annotations.indexed_reader" 
  class="Doctrine\Common\Annotations\IndexedReader" 
  public="false">
    <argument type="service" id="annotations.base_reader" />
</service>

<service id="annotations.cached_reader" 
  class="Doctrine\Common\Annotations\CachedReader">
    <argument type="service" id="annotations.indexed_reader" />
    <argument />
</service>

<service id="annotation_reader" alias="annotations.cached_reader" />    

<service id="doctrine.metadriver" class="Doctrine\ORM\Mapping\Driver\AnnotationDriver">
    <argument type="service" id="annotation_reader" />
    <argument>%doctrine.entity.path%</argument>
</service>

It might not be a fully working configuration but should give you some hints:

<service id="annotations.base_reader" 
    class="Doctrine\Common\Annotations\AnnotationReader" 
    public="false">
        <call method="setDefaultAnnotationNamespace">
            <argument>Doctrine\ORM\Mapping\</argument>
        </call>
        <call method="setIgnoreNotImportedAnnotations">
            <argument>TRUE</argument>
        </call>
        <call method="setEnableParsePhpImports">
            <argument>FALSE</argument>
        </call>
    </argument>
</service>

<service id="annotations.indexed_reader" 
  class="Doctrine\Common\Annotations\IndexedReader" 
  public="false">
    <argument type="service" id="annotations.base_reader" />
</service>

<service id="annotations.cached_reader" 
  class="Doctrine\Common\Annotations\CachedReader">
    <argument type="service" id="annotations.indexed_reader" />
    <argument />
</service>

<service id="annotation_reader" alias="annotations.cached_reader" />    

<service id="doctrine.metadriver" class="Doctrine\ORM\Mapping\Driver\AnnotationDriver">
    <argument type="service" id="annotation_reader" />
    <argument>%doctrine.entity.path%</argument>
</service>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文