Exception_Observer.php
<?php
/**
* 给观察者定义的规范
* Interface Exception_observer
*/
interface Exception_Observer
{
public function update(Observable_Exception $e);
}
Logging_Exception_Observer.php
<?php
class Logging_Exception_Observer implements Exception_Observer
{
protected $_filename = "D:/error/imoocException.log";
function __construct($filename = null)
{
if ($filename != null && is_string($filename)) {
$this->_filename = $filename;
}
}
/**
* 记录日志
* @param Observable_Exception $e
*/
public function update(Observable_Exception $e)
{
$message = "时间:" . date("Y-m-d H:i:s") . PHP_EOL;
$message .= "信息:" . $e->getMessage() . PHP_EOL;
$message .= "追踪信息:" . $e->getTraceAsString() . PHP_EOL;
$message .= "文件:" . $e->getFile() . PHP_EOL;
$message .= "行号:" . $e->getLine() . PHP_EOL;
error_log($message, 3, $this->_filename);
}
}
Emailling_Exception_Observer.php
<?php
class Emailling_Exception_Observer implements Exception_Observer
{
protected $_email = '403133112@qq.com';
public function __construct($email = null)
{
if ($email != null && filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->_email = $email;
}
}
/**
* 发送邮件
* @param Observable_Exception $e
*/
public function update(Observable_Exception $e)
{
$message = "时间:" . date("Y-m-d H:i:s") . PHP_EOL;
$message .= "信息:" . $e->getMessage() . PHP_EOL;
$message .= "追踪信息:" . $e->getTraceAsString() . PHP_EOL;
$message .= "文件:" . $e->getFile() . PHP_EOL;
$message .= "行号:" . $e->getLine() . PHP_EOL;
error_log($message, 1, $this->_email);
}
}
test.php
<?php
require_once 'Exception_observer.php';
require_once 'Observable_Exception.php';
require_once 'Logging_Exception_Observer.php';
require_once 'Emailling_Exception_Observer.php';
Observable_Exception::attach(new Logging_Exception_Observer());
Observable_Exception::attach(new Logging_Exception_Observer('D:/error/test1.log'));
//Observable_Exception::attach(new Emailling_Exception_Observer());
class MyException extends Observable_Exception
{
public function test()
{
echo "this is a test";
}
public function test1()
{
echo "我是自定义的方法处理这个异常";
}
}
try {
throw new MyException('出现异常了,记录一下下!!!');
} catch (MyException $e) {
echo $e->getMessage();
echo '<hr/>';
$e->test();
echo "<hr/>";
$e->test1();
}
Paste_Image.png
Paste_Image.png
Paste_Image.png
网友评论