网站开发中,需要针对异常和错误的捕捉,来帮助程序开发者进行bug的修改及网站错误日志记录或者呈现一个相对有好的错误页面.

如何可以统一管理这些异常和错误? 下面是我准备使用的处理方式:


// 捕捉错误,抛出异常
set_error_handler(function($errno, $errstr, $errfile, $errline) {
	throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});

// 捕捉undefined function 错误, 抛出异常
register_shutdown_function(function() {
    if ($error = error_get_last()) {
		throw new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']);
    }
});

// 统一捕捉异常
set_exception_handler(function($e) {
	if ($e instanceof ErrorException) {
		// 错误抛出的异常
	} elseif ($e instanceof Exception) {
		// 真正的异常
	}
});

php中,如果只能获取图片的二进制内容,如何获取图片的类型呢?

当然,除非必不得以,我不会选择通过内容的部分字节来判断类型. 能使用的函数是 getimagesize

getimagesize 只接收图片地址, 没有地址只有数据, 如果有文件的写权限, 可以通过先写一个临时文件, 然后使用 getimagesize 函数获取图片类型信息.

还有一种方法, 使用 stream wrapper, 给出我的测试代码, 供大家参考:

看到Spl中有这两个Interface, 自己尝试写了一下, 只实现了接口方法. 个人感觉, 适合做消息提醒及日志记录, 或类似于hook机制的插件.

下面是代码:

代码如下:


git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch path/to/your/file' HEAD
git push origin master --force
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

具体可以查看这篇文章 : 从仓库中删除敏感数据

另外注意在多人协同工作时,防止其他人又将文件提交上来(如某些文件之前没有加入到.gitignore文件中,然后这个文件更改了),需要每个人执行上面除push外的其它代码,或者重新clone.