本文目录一览:
- 1、新人求教,请问Thinkphp 中怎么捕获异常,自己进行处理
- 2、set_exception_handler函数在ThinkPHP中的用法
- 3、thinkphp中怎么处理上传文件
- 4、thinkphp 中有几个exception类
新人求教,请问Thinkphp 中怎么捕获异常,自己进行处理
用debug和trace,在配置中开启后就会在右下角有一个图标,点开查看错误就可以了。
希望我的回答可以帮到你,有什么问题可以追问。
set_exception_handler函数在ThinkPHP中的用法
本文实例讲述了set_exception_handler函数在ThinkPHP中的用法。分享给大家供大家参考。具体方法如下:
函数:
复制代码
代码如下:string
set_exception_handler
(
callback
$exception_handler
)
定义和用法:
set_exception_handler()
函数设置用户自定义的异常处理函数。
该函数用于创建运行时期间的用户自己的异常处理方法。
该函数会返回旧的异常处理程序,若失败,则返回
null。
语法:
set_exception_handler(exception_function)
参数
描述
error_function
必需。规定未捕获的异常发生时调用的函数。
该函数必须在调用
set_exception_handler()
函数之前定义。
这个异常处理函数需要需要一个参数,即抛出的
exception
对象。
提示和注释:
提示:在这个异常处理程序被调用后,脚本会停止执行。
同样是在看TP代码的时候发现的这个函数,就想不明白了,自己以前咋就没关心过这些东西呢?(捶胸顿足ing。。。)
继续来看一下TP是怎么实现的,呃,为啥一定要用TP呢,嗯。那好吧,一会儿我把手册的例子也搬过来。
复制代码
代码如下:public
function
appException($e)
{
halt($e-__toString());
}
set_exception_handler(array($this,"appException"));
呵呵,这个简单吧?因为我没有给出halt这个方法的实现,这样就足够了。
再看手册中的例子,
复制代码
代码如下:function
exception_handler($exception)
{
echo
"Uncaught
exception:
"
,
$exception-getMessage(),
"n";
}
set_exception_handler('exception_handler');
throw
new
Exception('Uncaught
Exception');
echo
"Not
Executedn";
其实呢,set_exception_handler就是设置了一下,当你的程序需要抛出一个异常的时候调用哪个自定义的函数。
就这么简单
注意事项:
set_exception_handler(“myException”)
不仅可以接受函数,还可以接受
类的方法(公开的静态方法
及
公开的非静态方法
都可以),但需要以
数组形式
传递,数组的第一值为“类名”,第二个参数为“方法名”
希望本文所述对大家的ThinkPHP框架程序设计有所帮助。
thinkphp中怎么处理上传文件
?php
//www.******* iOS-知识库
class UploadFileAction extends Action{
public function index() {
$Photo = M('Photo');
$data = $Photo-order('create_time desc')-find();
$this-assign('data', $data);
$this-display();
}
public function upload() {
if (!empty($_FILES)) {
//如果有文件上传 上传附件
$this-_upload();
}
}
// 文件上传
protected function _upload() {
import('@.ORG.UploadFile');
//导入上传类
$upload = new UploadFile();
//设置上传文件大小
$upload-maxSize = 3292200;
//设置上传文件类型
$upload-allowExts = explode(',', 'jpg,gif,png,jpeg');
//设置附件上传目录
$upload-savePath = './Uploads/';
//设置需要生成缩略图,仅对图像文件有效
$upload-thumb = true;
// 设置引用图片类库包路径
$upload-imageClassPath = '@.ORG.Image';
//设置需要生成缩略图的文件后缀
$upload-thumbPrefix = 'm_,s_'; //生产2张缩略图
//设置缩略图最大宽度
$upload-thumbMaxWidth = '400,100';
//设置缩略图最大高度
$upload-thumbMaxHeight = '400,100';
//设置上传文件规则
$upload-saveRule = 'uniqid';
//删除原图
$upload-thumbRemoveOrigin = true;
if (!$upload-upload()) {
//捕获上传异常
$this-error($upload-getErrorMsg());
} else {
//取得成功上传的文件信息
$uploadList = $upload-getUploadFileInfo();
import('@.ORG.Image');
//给m_缩略图添加水印, Image::water('原文件名','水印图片地址')
Image::water($uploadList[0]['savepath'] . 'm_' . $uploadList[0]['savename'], APP_PATH.'Tpl/Public/Images/logo.png');-thinkphp异常捕获
$_POST['image'] = $uploadList[0]['savename'];
}
$model = M('Photo');
//保存当前数据对象
$data['image'] = $_POST['image'];
$data['create_time'] = NOW_TIME;
$list = $model-add($data);
if ($list !== false) {
$this-success('上传图片成功!');
} else {
$this-error('上传图片失败!');
}
}
}
?
thinkphp 中有几个exception类
因为APP::exec()中直接通过try{}catch(ReflectionException $e){}捕获控制器执行过程中所有的ReflectionException异常,并调用__call方法,导致一个问题:-thinkphp异常捕获
自己项目中用到反射的时候,很多方法默认是会抛出异常的,比如:
ReflectionClass::implementsInterface($interface)方法,如果$interface不存在的话,内部会直接抛出一个异常,这时候期待的应该是程序中断,但是由于App类的处理机制,导致程序无法中断,而是直接输出视图。-thinkphp异常捕获