2015-10-19 163 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; 
    } 
}