【发布时间】:2018-04-04 08:10:18
【问题描述】:
假设我有一个 database.php 文件,其中包含对数据库的持久访问。
<?php
$database = new PDO('mysql:host=xxx', "xxx", "xxx", array(
PDO::ATTR_PERSISTENT => true
));
?>
每次我想在控制器中查询数据库时,我应该怎么做?
1/使用global关键字获取我的全局$database变量
<?php
include '../app/config/Database.php';
function getLastOfTheWeek()
{
global $database;
$database->query('SELECT * FROM `xxx`');
...
}
?>
2/ 在函数中包含database.php
<?php
function getLastOfTheWeek()
{
include '../app/config/Database.php';
$database->query('SELECT * FROM `xxx`');
...
}
?>
3/ 给这个人一些文档,他需要它
或者两者都是邪恶的,我应该使用另一种方法。
【问题讨论】:
-
这不是关于全局与包含,而是关于每次实例化一个新的 PDO 连接实例而不是重复使用相同的连接。
-
我认为你不应该把你的业务层和控制器层混为一谈。
-
@bassxzero 接受的答案中的“DIC”很糟糕。这与 DI 的工作方式相反。
-
@ishegg 所以自己去回答这个问题吧。我只是在为他指明正确的方向。希望他会到处搜索而不是复制和粘贴。
标签: php performance pdo