laravel框架总结(二)
来源:互联网 发布:适合mac的杀毒软件 编辑:程序博客网 时间:2024/05/16 11:37
1.try {} catch () {} 异常处理。
Laravel5将所有的自定义错误和异常处理都移到了App/Exceptions/Hander.php。
laravel框架可以在app/Exceptions/Handler.php文件中做如下处理:
public function render($request, Exception $exception)
{
// 只处理自定义的APIException异常
if($exception instanceof TestException) {
$messageCode = $exception->getCode();
$status = substr($messageCode, 0, 1) == '1' ? 1 : 0;
$result = [
"message" => \MessageCodeInfo::getMessage($exception->getCode()),
"data" => [],
"status" => $status
];
return response()->json($result);
}
return parent::render($request, $exception);
}
这样设置之后,不用catch就可以捕获指定的异常。
参考链接:http://www.jianshu.com/p/85363b6fbf3f
2.request 请求参数在请求控制器前先验证参数合法性。
ps:表单验证和业务逻辑挤在一起,我们的Controller中就会有太多的代码,而且重复的验证规则基本也是复制粘贴。我们可以利用Form Request来封装表单验证代码,从而精简Controller中的代码逻辑,使其专注于业务。
在调用控制器方法之前验证传入的表单请求,这意味着你不需要在控制器中写任何验证逻辑:
/**
* 保存传入的博客文章。
* @param StoreBlogPost $request
* @return Response
*/
public function store(StoreBlogPost $request)
{
// The incoming request is valid...
}
如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。这些错误也会被闪存到 Session 中,以便这些错误都可以在页面中显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数据的 HTTP 响应。
参考链接:https://d.laravel-china.org/docs/5.5/validation Laravel 的表单验证机制详解
http://laravelacademy.org/post/6768.html [ Laravel 5.4 文档 ] HTTP层 —— 验证
http://www.jianshu.com/p/658f979abfb7Laravel中使用FormRequest进行表单验证及对验证异常进行自定义处理
http://blog.csdn.net/duanshuiliu2017/article/details/78343408?locationNum=8&fps=1 Laravel 5.5 FormRequest 自定义错误消息
http://blog.csdn.net/u012373677/article/details/73185400 自定义laravel表单请求验证类(FormRequest共用一个rules()),一个文件搞定
http://www.muyesanren.com/2017/08/19/laravel-controllers-clean-with-form-requests/ Laravel使用Form Request使你的Controller更整洁
https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update
http://blog.csdn.net/i6448038/article/details/51246045 laravel请求参数校验
3.Model中获取自身表信息。
class Channel extends Model
{
protected $connection = '***';
protected $table = '***';
public function ****()
{
$fields = array(
'id', 'name', 'desc'
);
⭐️⭐️⭐️$test = self::select($fields)⭐️⭐️⭐️
->whereNotIn('desc', 1)
->where('status', 2)
->get();
}
}
php artisan queue:work
运行此命令将指示Laravel创建应用程序的一个实例并开始执行作业,这个实例将一直存活着,启动Laravel应用程序的操作只在运行命令时发生一次,同一个实例将被用于执行你的作业,这意味着:
避免在每个作业上启动整个应用程序来节省服务器资源。
在应用程序中所做的任何代码更改后必须手动重启worker。
你也可以这样运行:
php artisan queue:work --once
这将启动应用程序的一个实例,处理单个作业,然后干掉脚本。
php artisan queue:listen
queue:listen 命令相当于无限循环地运行 queue:work --once 命令,这将导致以下问题:
每个循环都会启动一个应用程序实例。
分配的worker将选择一个工作并执行。
worker进程将被干掉。
使用 queue:listen 确保为每个作业创建一个新的应用程序实例,这意味着代码更改以后不必手动重启worker,同时也意味着将消耗更多的服务器资源。
参考链接:
https://segmentfault.com/a/1190000010224426#articleHeader0 剖析Laravel队列系统--Worker
http://laravelacademy.org/post/6922.html [ Laravel 5.4 文档 ] 综合话题 —— 队列
Laravel5将所有的自定义错误和异常处理都移到了App/Exceptions/Hander.php。
laravel框架可以在app/Exceptions/Handler.php文件中做如下处理:
public function render($request, Exception $exception)
{
// 只处理自定义的APIException异常
if($exception instanceof TestException) {
$messageCode = $exception->getCode();
$status = substr($messageCode, 0, 1) == '1' ? 1 : 0;
$result = [
"message" => \MessageCodeInfo::getMessage($exception->getCode()),
"data" => [],
"status" => $status
];
return response()->json($result);
}
return parent::render($request, $exception);
}
这样设置之后,不用catch就可以捕获指定的异常。
参考链接:http://www.jianshu.com/p/85363b6fbf3f
2.request 请求参数在请求控制器前先验证参数合法性。
ps:表单验证和业务逻辑挤在一起,我们的Controller中就会有太多的代码,而且重复的验证规则基本也是复制粘贴。我们可以利用Form Request来封装表单验证代码,从而精简Controller中的代码逻辑,使其专注于业务。
在调用控制器方法之前验证传入的表单请求,这意味着你不需要在控制器中写任何验证逻辑:
/**
* 保存传入的博客文章。
* @param StoreBlogPost $request
* @return Response
*/
public function store(StoreBlogPost $request)
{
// The incoming request is valid...
}
如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。这些错误也会被闪存到 Session 中,以便这些错误都可以在页面中显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数据的 HTTP 响应。
参考链接:https://d.laravel-china.org/docs/5.5/validation Laravel 的表单验证机制详解
http://laravelacademy.org/post/6768.html [ Laravel 5.4 文档 ] HTTP层 —— 验证
http://www.jianshu.com/p/658f979abfb7Laravel中使用FormRequest进行表单验证及对验证异常进行自定义处理
http://blog.csdn.net/duanshuiliu2017/article/details/78343408?locationNum=8&fps=1 Laravel 5.5 FormRequest 自定义错误消息
http://blog.csdn.net/u012373677/article/details/73185400 自定义laravel表单请求验证类(FormRequest共用一个rules()),一个文件搞定
http://www.muyesanren.com/2017/08/19/laravel-controllers-clean-with-form-requests/ Laravel使用Form Request使你的Controller更整洁
https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update
http://blog.csdn.net/i6448038/article/details/51246045 laravel请求参数校验
3.Model中获取自身表信息。
class Channel extends Model
{
protected $connection = '***';
protected $table = '***';
public function ****()
{
$fields = array(
'id', 'name', 'desc'
);
⭐️⭐️⭐️$test = self::select($fields)⭐️⭐️⭐️
->whereNotIn('desc', 1)
->where('status', 2)
->get();
}
}
4.laravel在增加多模块时,模块下的config()函数获取问题。
Config:set('', $example)
5.php artisan queue:listen 和 queue:work 的区别。php artisan queue:work
运行此命令将指示Laravel创建应用程序的一个实例并开始执行作业,这个实例将一直存活着,启动Laravel应用程序的操作只在运行命令时发生一次,同一个实例将被用于执行你的作业,这意味着:
避免在每个作业上启动整个应用程序来节省服务器资源。
在应用程序中所做的任何代码更改后必须手动重启worker。
你也可以这样运行:
php artisan queue:work --once
这将启动应用程序的一个实例,处理单个作业,然后干掉脚本。
php artisan queue:listen
queue:listen 命令相当于无限循环地运行 queue:work --once 命令,这将导致以下问题:
每个循环都会启动一个应用程序实例。
分配的worker将选择一个工作并执行。
worker进程将被干掉。
使用 queue:listen 确保为每个作业创建一个新的应用程序实例,这意味着代码更改以后不必手动重启worker,同时也意味着将消耗更多的服务器资源。
参考链接:
https://segmentfault.com/a/1190000010224426#articleHeader0 剖析Laravel队列系统--Worker
http://laravelacademy.org/post/6922.html [ Laravel 5.4 文档 ] 综合话题 —— 队列
https://www.jiangxianli.com/?p=80 Laravel队列使用中踩的坑,不报错但是队列一直再重试
6.修改一些 .env 或 config 配置,可以使用
php artisan down
php artisan up
命令来使配置修改生效。
阅读全文
0 0
- laravel框架总结(二)
- laravel框架总结一
- laravel总结二
- laravel 框架学习(二)
- 学习laravel框架二:开始
- laravel框架相关总结链接
- laravel框架总结 -- 发送邮件
- laravel框架总结 -- redis使用
- laravel框架总结 -- 关联关系
- laravel框架总结 -- 返回值
- laravel框架总结 -- 软删除
- laravel框架总结 -- ORM模型
- laravel框架总结 -- 数据库操作
- laravel框架使用总结(一)
- Laravel框架学习记录二 经验记录
- Laravel框架学习(ORM<二>)
- Laravel框架关键技术解析(二)
- PHP开发框架Laravel数据库操作方法总结
- Windows 安装 pytorch
- XML
- HBASE-1.1.12集群启动之后Hmaster,HregionServer进程会很快死掉问题
- 剑指offer每日一刷-2017年11月24日
- Just Finish it up UVA
- laravel框架总结(二)
- Unable to locate package
- Java for Web学习笔记(九六):持久化初探(1)数据存储
- 属性动画-菜单以散开的方式弹出
- Ubuntu Apache2 配置.htaccess 隐藏thinkPHP项目index.php无效正确解决办法!!!!!!
- 使用ECSShadowscoks服务器
- 守护进程
- 请求发送者与接收者解耦——命令模式(三)
- PAT