Symfony 2 / Doctrine - 始终可用的数据库连接?

时间:2011-01-16 13:58:36

标签: php database variables symfony1

根据Symfony 2文档,您必须使用以下PHP代码连接到数据库并执行查询...

$conn = $this->get('database_connection');
$users = $conn->fetchAll('SELECT * FROM users');

我是Symfony 2的新手,但我对OOP很有经验。我想知道是否可以从任何捆绑包中访问全局可用的$conn变量。 $conn变量将包含$this->get('database_connection')的值,因此每次我想创建新查询时都不必重新键入$conn = $this->get('database_connection');

谢谢!

1 个答案:

答案 0 :(得分:3)

全局变量大部分时间都不是你想要的OOP。当涉及到处理多个变量的方法时,它们会让人感到困惑,甚至可能被局部变量隐藏。对我来说,使用像

这样的陈述
$anything = $this->get('what.the.hell.why.arent.those.identifiers.shorter');

和你一样恼人,所以我最终创建了每个项目的Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller的一个子类,它提供了使用实际标识符调用get的方法。在你的情况下,我会创建一个方法

public function getDatabaseConnection()
{
    return $this->get('database_connection');
}

一般情况下 - 为什么不使用Doctrine来管理数据库连接?大多数查询都可以由ORM完成,这是使用面向数据库的真实面向对象的方法。想想看,我有几天也在玩Symfony2 / Doctrine,感觉很好。一开始,它可能看起来像一个配置的地狱,但一旦你完成了基本的配置,开发真的很快! :)