Doctrine 2 ORM 使用可恶的 CamelCase 创建类
我为 Doctrine 创建了 yaml 配置。当我尝试使用 doctrine orm:generate-entities 时,它会创建带有驼峰式大小写的 getter 和 setter 的 php 文件。因此,is_public
字段转换为 setIsPublic
和 getIsPublic
方法。真是太糟糕了。如何获取 set_is_public
和 get_is_public
?我可以手动编辑生成的 php 文件,但我不知道更改架构时会发生什么。
I created yaml configuration for Doctrine. When I'm trying doctrine orm:generate-entities
, it creates php files with getters and setters in camel case. So, is_public
field transforms into setIsPublic
and getIsPublic
methods. It's owful. How can I get set_is_public
and get_is_public
? I can manually edit generated php files, but I don't know what will happen when I change the schema.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以选择命名策略该 Doctrine 将用于使用以下方式生成项目:
对于您的具体情况,我认为您正在查看类似的内容:
链接的主题继续向您展示如何编写自己的自定义命名策略。
如果您使用 Symfony,则为 甚至更容易(就像大多数事情都是用 Symfony 实现的,但这只是我的意见)通过
config.yml
:You can choose a naming strategy that Doctrine will use to generate the items using:
For your specific case, I think you're looking at something like:
The linked topic goes on to show you how you can write your own custom naming strategy.
If you're using Symfony, it's even easier (like most things are with Symfony, but that's just my opinion) via
config.yml
:Symfony 的编码标准鼓励 Symfony 用户使用驼峰式命名法:
Symfony's coding standards encourage Symfony users to use camelCase:
个人建议 - 不要通过学说 orm:generate-entities 生成实体。
使用纯 PHP 创建类。为什么?
Orm 使用私有反射来与数据库进行通信。您不需要生成 setter 和 getter。我建议您使用工厂或构造函数等设计模式来实现您的目标。装饰器也应该工作得很好。
$camelCase 不仅仅是 Symfony 对代码标准的推荐。它基于 PSR2。我强烈推荐使用 PSR2,代码变得干净和标准化。
标准 ORM 命名策略是 $camelCase 私有 var 到 snake_case 列名。如果您想更改它,请考虑: 其他命名策略
Personal advice - do not generate entities by doctrine orm:generate-entities.
Use plain PHP to create class. Why?
Orm uses reflection on privates to communicate with database. You dont need to generate setters and getters. I recomend You to use design patterns such as factory or constructor to achive Your goal. Decorators also should work fine.
$camelCase is not only Symfony's recomendation for code standard. It's based on PSR2. I highly recomend using PSR2, code gets clean and standarized.
Standard ORM naming strategy is $camelCase private var to snake_case column name. If you want to change it otherwise, consider: other naming stategies