这是我的数据库类:
<?php
// Database class
final class Database {
private static $instance = null;
public $db;
private function __construct() {
global $config;
global $app;
$config = (object) $config["database"];
try {
$dsn = sprintf("%s:hostname=%s;dbname=%s;", $config->driver, $config->host, $config->dbname);
$this->db = new PDO($dsn, $config->username, $config->password);
$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
// stop app
// Redirect to /error/database
}
}
public static function getDb() {
if(Database::$instance == null) Database::$instance = new Database();
return Database::$instance->db;
}
}
现在,如果数据库连接失败,我想将用户重定向到/error/database
.
但是,它不会重定向。我努力了
header("Location: /error/database");
和
$app->redirect("/error/database");
我还尝试创建一个自定义错误处理程序(使用$app->error(function() { ... });
和在 catch$app->error
但是它返回NULL
?
这个解决方案对我不起作用,可能是因为它使用 SlimFramework 2 而我使用的是 3?