2015-10-19 73 views
0

我正在升级到slim v3。我应该如何使用数据库连接?我在想有疙瘩注射服务:Slim Framework DB服务异常处理

DBConnection的

final class DBConnection { 

    private $db; 

    public function __construct() { 
     try { 
      // Code to open up a DB connection in $db var... 
     } catch (Exception $ex) { 
      // TODO $app->error ? 
     } 
    } 

    public function getDB() { 
     return $this->db; 
    } 

} 

的index.php如果

$container = new \Slim\Container; 

$container['db'] = function($container) { 
    $connection = new DBConnection(); 
    return $connection->getDB(); 
}; 

数据库连接养PDO(或通用的)异常?在v2我有类似的东西

$app->error 

现在是什么?我也定义了一个自定义errorHandler,我怎样才能以某种方式“重定向”通过该路线的控制?

+0

你是什么意思与“我怎么能以某种方式‘重定向’在这条路线的控制?”? –

回答

0

Slim 3的错误处理非常简单,如explained in the documentation

既然你实例Slim\App之前定义你的容器服务,以下列方式定义错误处理程序(在index.php):

$container['errorHandler'] = function($container) { 
    return function ($request, $response, $exception) use ($container) { 
     return $container['response']->withStatus(500) 
            ->withHeader('Content-Type', 'text/html') 
            ->write($exception->getMessage()); 
    }; 
}; 

所有的异常将被定义的处理程序捕获,只要:

  • 以前没有发现异常(例如在您的示例代码中)
  • 以下情况不属于这些异常:
    • Slim\Exception\MethodNotAllowedException
    • Slim\Exception\NotFoundException
    • Slim\Exception\SlimException

对于前两种,你可以定义自己的处理程序,以及。

所以,回到你的例子:

final class DBConnection { 

    private $db; 

    public function __construct() { 
     // Code to open up a DB connection in $db var... 
     // Don't have to catch here 
    } 

    public function getDB() { 
     return $this->db; 
    } 
}