首页 > 解决方案 > 我们应该用什么来测试存在

问题描述

在 php symfony 中,我们使用学说。在我们项目的许多部分中,我们使用:

$entity = $manager->getRepository(Entity::class)->find(['toto' => $toto]);

或者

$entity = $manager->getRepository(Entity::class)->findOneBy(['toto' => $toto]);

然后我们测试我们是否有一些结果。之间最好的做法是:

if (!empty($entity )) {
some todo
}

if (null === $entity )) {
some todo
}

标签: phpsymfonydoctrine

解决方案


至少对我而言,这种情况的最佳方法是检查instanceof类似

if ($entity instanceof Entity::class)

顺便说一句,这确实是主观的,但我永远不会更喜欢它们emptynull因为它们带来了完全不同的意义。

由于empty变量可能永远不会被声明,它可以是不同的类型(字符串、数组、null、false)等等。

通过null严格检查,您只测试那种(空)值(并且在教义改变其 API 之前很好,这是不可能的)。

使用instanceof对我来说是最好的,因为你“绕过”所有其他值,无论你从查询中得到什么类型。


推荐阅读