我在许多PHP文件中使用相同的代码块,有时在相同的PHP文件中(例如,当有一个if/else.我知道有更好的方法,但我不太清楚如何做.我想要替换有一些东西的大块,但不确定是什么适合.require也许?
$hostname = 'localhost';
$database = 'dev_testing';
$username = 'root';
$password = 'XXXXXX';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)
@maalls和@TahaPaksu的答案很好,但@ marcB的评论甚至更好:通常你只想在每个脚本执行时连接到数据库一次.我不想在依赖注入的方向上踢你,但作为一个中间解决方案,我想建议这个类看起来大致像一个单例,但实际上是Memoization模式实现(参见PHP Design)图案为其他图案的例子).
无论如何:代码:
class Database() {
static private $connection = null;
public static function getConnection() {
if (static::$connection === null) {
$hostname = 'localhost';
$database = 'dev_testing';
$username = 'root';
$password = 'XXXXXX';
$dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
static::$connection = $dbh;
}
return static::$connection;
}
}
Run Code Online (Sandbox Code Playgroud)
在您的脚本中,您可以使用它来调用它
$dbh = Database::getConnection();
Run Code Online (Sandbox Code Playgroud)
您可以根据需要随时调用该行,但只有在第一次调用该脚本时才会连接到数据库.后续调用将返回相同的连接.这将为您的数据库节省相当多的开销.
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |