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

时间:2015-01-23 12:37:11

标签: php symfony doctrine-orm phpunit

我在任何Symfony安装之外单独创建一个Symfony包,用于我的几个项目。我是Symfony中这类工作流程的新手,我对如何最好地接近它感到困惑。

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

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

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

我是不是错了?解释工作流程的文章非常有用,但我没有通过谷歌找到任何东西。

2 个答案:

答案 0 :(得分:0)

生成getter和setter是IDE的常见功能。您可以使用免费的NetBeans IDE,而有些人可能更喜欢为PhpStorm支付一些钱。两个IDE都可以为您生成getter和setter。

答案 1 :(得分:0)

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

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

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

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