Php Symfony实体管理器呼叫
我想知道在Symfony3控制器上调用实体管理器是否有任何区别:Php Symfony实体管理器呼叫,php,symfony,doctrine,entitymanager,symfony3.x,Php,Symfony,Doctrine,Entitymanager,Symfony3.x,我想知道在Symfony3控制器上调用实体管理器是否有任何区别: $this->getDoctrine()->getManager() 以及: 表演? 更正确 先谢谢你, Carl Dev第一种方法仅在扩展基本控制器时可用,以便可以在控制器中使用。这是第二种方法的捷径 例如,当您需要实体管理器作为类内的服务时,第二种方法很有用,并且是获取条令实体管理器的正确方法。第一种方法仅在扩展基本控制器时可用,因此通常可以在控制器中使用。这是第二种方法的捷径 例如,当您需要实体管理器作为类内的
$this->getDoctrine()->getManager()
以及:
表演?
更正确
先谢谢你,
Carl Dev第一种方法仅在扩展基本控制器时可用,以便可以在控制器中使用。这是第二种方法的捷径
例如,当您需要实体管理器作为类内的服务时,第二种方法很有用,并且是获取条令实体管理器的正确方法。第一种方法仅在扩展基本控制器时可用,因此通常可以在控制器中使用。这是第二种方法的捷径
例如,当您需要实体管理器作为类内的服务时,第二种方法很有用,并且是获得条令实体管理器的正确方法。我认为两者在性能级别上是相同的,但它们是否正确?我认为没有,Symfony有一个漂亮的特性叫做“依赖注入”(dependency injection),你从来没有直接调用过服务,为什么?因为很难测试,例如:
public function test()
{
$manager = $this->getDoctrine()->getManager();
$manager->persist(new MyClass());
$manager->flush();
}
如果您想测试这个调用那个方法,您必须有一个指向某个地方的管理器,所以您的测试取决于基础结构
现在,想象一下:
public function test(EntityManager $manager)
{
$manager->persist(new MyClass());
$manager->flush();
}
您可以模拟该实体管理器或实现onMemoryEntityManager来删除该依赖项
这背后有很多理论,我建议读一读:
和我认为两者在性能水平上是相同的,但这些是正确的吗?我认为没有,Symfony有一个漂亮的特性叫做“依赖注入”(dependency injection),你从来没有直接调用过服务,为什么?因为很难测试,例如:
public function test()
{
$manager = $this->getDoctrine()->getManager();
$manager->persist(new MyClass());
$manager->flush();
}
如果您想测试这个调用那个方法,您必须有一个指向某个地方的管理器,所以您的测试取决于基础结构
现在,想象一下:
public function test(EntityManager $manager)
{
$manager->persist(new MyClass());
$manager->flush();
}
您可以模拟该实体管理器或实现onMemoryEntityManager来删除该依赖项
这背后有很多理论,我建议读一读:
及