为可重用的Symfony捆绑包生成Doctrine实体getter/setter


Generate Doctrine entity getters/setters for a reusable Symfony bundle

我正在创建一个独立的Symfony捆绑包,在任何Symfony安装之外,用于我的几个项目。我是Symfony中这种类型的工作流程的新手,我对如何最好地处理它有点困惑。

我知道我可以编写单元测试来测试捆绑包的功能方面,但我也绘制了大约 25 个 Doctrine 实体,我宁愿不必手动定义 getter/setter。

假设我能够安装 Composer 依赖项,然后使用 vendor/bin/doctrine 来生成它们,但 Doctrine 抛出了一个错误,说我应该定义一个 config-cli.php 文件,该文件旨在实例化需要连接的实体管理器。

这很好,但鉴于没有实际的数据库(理论上),我不想定义连接。我只想生成实体并使用PHPUnit测试我的服务,然后稍后将捆绑包加载到实际的Symfony安装中。

我做错了吗?一篇解释工作流程的文章会非常有帮助,但我没有通过谷歌找到任何东西。

生成 getter 和 setter 是 IDE 的一个常见功能。您可以使用免费的NetBeans IDE,而有些人可能更喜欢为PhpStorm花一些钱。这两个 IDE 都可以为您生成吸气剂和二传手。

因此,如果没有实体管理器的实例,似乎不可能运行generate:*命令,甚至不仅仅是生成getter/setter。不幸的是,这意味着需要连接,这是我在这个开发阶段试图避免的。

我一直在浏览一些更流行的Symfony捆绑包,试图弄清楚他们如何处理它。从我所能收集到的模式是在Model/命名空间中定义一个基本的、非供应商特定的模型,使用标准 DocBlock 作为属性(任何 ol' 生成器都可用于解析和生成 getter/setter),然后在 Entity/ 命名空间中的 Doctrine 特定实体中扩展类。

随着Entity'Foo Model'Foo扩展,类型提示仍然有效,您只需要覆盖属性注释和任何需要 Doctrine 特定代码的方法。

虽然最初需要做更多的工作(忽略生成过程),但我实际上喜欢这种方法。它不仅将重复的 getter/setter 样板代码与 Doctrine 映射分开,而且实际上通过将模型与 Doctrine 完全分离来遵循最佳实践。