Laravel 开发解惑

一直想写一篇关于Laravel开发相关的文章,但是无从下手。突然想起可以写一个类似问答的文章,既可以给看到的人用,也可以给自己用,以免忘了。

注意,本文不适合纯小白,适合看过文档但是不太了解的人用,高手也可以飘过。

一些中文表述是参考https://learnku.com/docs/laravel中的翻译写的,觉得不大理解的可以参考这个文档。有一些我已经附上具体页面链接,可以点击去看。

 

1. Laravel 的任务调度(计划任务)该怎么用好?是直接写在Kernel里还是另外写一个类?

关于这个问题,一般是建议另外写一个类,然后在Kernel里面调用。至于怎么写,可以生成一个Command,然后在Kernel里面使用【Artisan 命令调度】,来调用你写好的命令。这样的好处是你调试方便,如果不想这样弄,也可以使用闭包或者 invokable objects 来制作需要调用的内容。当然用闭包的话,内容就全在Kernel里了,这样不优雅,不好维护,所以用invokable object比较好。

2. Laravel 的事件要怎么用?什么样的场景下最适合使用?

其实这两个问题,我觉得这个页面已经可以解释:https://learnku.com/docs/laravel/6.x/events/5162

不过,就第二个问题,我简要地回答一下:一般是与当前业务逻辑无关的代码,适合使用事件系统。例如,我下单了,要给用户发邮件,那发邮件这个动作明显不是下单的逻辑内容,只是一个附加的动作,那么可以使用事件系统。其实事件系统并非是全自动触发,而是人为去设置一个触发点,而有一些事件是系统里自带有的,所以才不用我们去触发。大部分的事件,需要我们在业务逻辑代码执行之后手动触发。说白了,就像文档里写的那样,下单和发邮件的代码不耦合在一起,这样即方便维护,也方便我日后增加功能,比如我还要通过公众号、第三方推送平台来推送通知。这是一个很有用的功能,之前都没有太注意过,感觉错过了一个亿。

 

待续……

发表评论