PDO“异常安全”并将其写入日志文件PHP

时间:2012-10-02 20:04:03

标签: php exception pdo

我正在编写一个PDO包装器,并且遇到了捕获异常的问题。

我正在尝试维护异常安全练习,所以我想知道如何捕获异常,将其写入日志文件,并使用异常安全来做某事,可能告诉用户再次重试操作或导航到错误页面或其他任何内容(您可以建议的任何内容)。

那么如果可能的话怎么办呢?

1 个答案:

答案 0 :(得分:4)

查看此代码段,它显示了它是如何完成的:

class MyDb extends PDO 
{
  protected $error;

  function __construct( $logger )
  {
    try {
      parent::__construct( 'mysql:host=localhost;dbname=xxxx', 'xxx', 'xxx' );
      $this->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );

    }
    catch ( Exception $e ) {
       $this->error = $e->getMessage();
       // do your log writing stuff here
       $logger->Add( $this->error ); 
    }
  }
}

<强>更新

类的用法:

$logger = new MyLogger();
$db = new MyDb( $logger );

当然,您需要一个带有add方法的记录器类:

class MyLogger
{
  const FILENAME = '/tmp/mylog.txt' ;

  function Add( $error )
  {
    file_put_contents( self::FILENAME, $error, FILE_APPEND);
  }
}