今天,我面临一个概念上的问题;我正在开发一个与教育相关的Web应用程序,用户将在其中使用多种问题选择形式来培训自己。

这是一个经常性的项目,因为它可能会导致围绕同一想法的其他一些项目,但有些衍生。

为了下次更加高效,我想为MQC表单做一个可重用的包;我脑子里有我的架构,除非用户,否则它不依赖于应用程序中的任何其他实体。这不是问题,因为它只是关系的一部分,我认为我可以将其作为参数传递。

这里最大的问题是:我已经在这个特定的应用程序中创建了一个通用实体,表示“内容类型”,并且包含一些重要信息,应用程序中的所有其他实体都应该共享这些信息。问题是,我可重用 bundle 包中的基类也应该从该通用类继承。

这就是我的意思:如何定义通用的东西,但在这种特定情况下,使其继承自我的应用程序实体之一?甚至有可能,或者是真正的不良观念?
也许我应该使用一个中介类,并添加与所有其他实体的关系,但是那样我将无法一起选择许多不同的内容类型(例如,出于历史目的)...

预先感谢

最佳答案

如果我理解您的想法正确,我将通过以下解决方案为您提供建议:
我将从一些可重复使用的 bundle 包“CustomerReviewBundle”中发布代码,因此我认为您将能够轻松地适应您的情况:

  • 在可重复使用的包ProductInterface处创建一个接口(interface)
    interface ProductInterface
    {
    
    }
    
  • 然后,您可以参考ContentTypeInterface在可重复使用的包中创建一个实体
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
    use \Gamma\CustomerReview\CustomerReviewBundle\Interfaces\ProductInterface;
    
    /**
     * @ORM\Entity(repositoryClass="Gamma\CustomerReview\CustomerReviewBundle\Repository\CustomerReviewRepository")
     * @ORM\Table(name="customer_review", indexes={
     * @ORM\Index(name="enabled_idx", columns={"enabled"}),
     * @ORM\Index(name="rating_idx", columns={"enabled", "rating"}),
     * @ORM\Index(name="sort_idx", columns={"date"})
     * })
     */
    class CustomerReview
    {
    ....
    other properties
    ...
        /**
         * Product
         *
         * @ORM\ManyToOne(targetEntity="Gamma\CustomerReview\CustomerReviewBundle\Interfaces\ProductInterface")
         */
        private $product;
    ....
    getters/setters
    ...
    }
    
  • 然后我将可重复使用的 bundle 软件连接到我的应用程序

  • 并可以按照config.yml中的设置来定义可以用于评论的产品类型
    doctrine:
        # ...
        orm:
            # ...
            resolve_target_entities:
                 Gamma\CustomerReview\CustomerReviewBundle\Interfaces\ProductInterface: \MyApp\ProductBundle\Entity\Product
    

    因此,您可以采用相同的方法,只需将Product更改为ContentType类,然后就可以为每个使用可重复使用的 bundle 包的应用程序定义某些内容类型

    更多信息http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html

    关于symfony - 可重用的包和实体继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29918777/

    10-12 05:19