laravel框架总结(二)

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();
    }
}

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
命令来使配置修改生效。

你可能感兴趣的:(php,laravel)