加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用Doctrine EntityRepository中的魔术查找方法是否合适

发布时间:2020-12-13 22:23:21 所属栏目:PHP教程 来源:网络整理
导读:我在symfony框架的背景下问. 我想知道这是一个使用魔术查找方法(如find($id),findByField($value)等)的好习惯. 这些方法既没有返回类型也没有定义.这导致我的IDE在它们周围标记警告.此外,我必须在使用这些方法的同时标记返回值的类型,以使代码完成处理这些变
我在symfony框架的背景下问.

我想知道这是一个使用魔术查找方法(如find($id),findByField($value)等)的好习惯.

这些方法既没有返回类型也没有定义.这导致我的IDE在它们周围标记警告.此外,我必须在使用这些方法的同时标记返回值的类型,以使代码完成处理这些变量.

作为一种解决方案,我通常在自定义存储库类中编写getter.在symfony docs中有一个这样的getter的例子,它重载了一个魔法findBy方法的变体.

我对这种重载魔法查找方法也有不好的看法,因为它将我自己的repo实现与父EntityRepository混合.

所以我最终编写了使用“get”前缀而不是“find”的自定义getter.

现在,有人可以告诉我最新的做法是什么?为什么?

编辑

最近我正在寻找一些优化学说的方法,我发现建议不要使用魔术探测器,所以它是另一个反对魔术探测器的论据.

我还阅读了有关魔术探测器的学说文档,并发现:
http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/dql-doctrine-query-language.html#magic-finders

These are very limited magic finders and it is always recommended to expand your queries to be manually written DQL queries. These methods are meant for only quickly accessing single records,no relationships,and are good for prototyping code quickly.

所以我终于为魔术发现者制定了自己的观点(和用例).仅将它们用于加速编码,并始终使用TODO标记它们,以便在清理代码时将它们重写为自定义存储库方法.

解决方法

在我看来,这也是一个不好的做法.我建议你使用findBy([])和findOneBy([])方法.我相信当我开始学习symfony时,我遇到了一个魔术方法根本不起作用的情况,因为我的实体的属性是用下划线命名的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读