make:migration过程分析

来源:互联网 发布:全国十佳网络教育机构 编辑:程序博客网 时间:2024/04/30 18:52

01:App\Console\Kernel对象实例->handle(参数1,参数2)

参数1: Symfony\Component\Console\Input\ArgvInput对象实例
参考2: Symfony\Component\Console\Output\ConsoleOutput对象实例

第1步:读取bootstraper,
D:\03www2018\study\myblog\app\Console\commands下面所有的类文件,这些类文件必须继承Illuminate\Console\Command

\App\Console\Kernel 继承 Illuminate\Foundation\Console\Kernel
Illuminate\Foundation\Application是容器
Illuminate\Console\Application 继承 Symfony\Component\Console\Application

App\Console\Kernel Object(
[commands:protected] => Array()
[app:protected] => Illuminate\Foundation\Application 对象
[events:protected] => Illuminate\Events\Dispatcher 对象
[artisan:protected] =>
[commandsLoaded:protected] =>
[bootstrappers:protected] => Array(
[0] => Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables
[1] => Illuminate\Foundation\Bootstrap\LoadConfiguration
[2] => Illuminate\Foundation\Bootstrap\HandleExceptions
[3] => Illuminate\Foundation\Bootstrap\RegisterFacades
[4] => Illuminate\Foundation\Bootstrap\SetRequestForConsole
[5] => Illuminate\Foundation\Bootstrap\RegisterProviders
[6] => Illuminate\Foundation\Bootstrap\BootProviders
)
)

第01步kernel启动(bootstrap)

1.遍历$bootstrappers

会依次执行 前事件,bootstrap()方法,后事件

这里面有3个重要的console服务
Illuminate\Database\MigrationServiceProvider 注册所有的命令
\Illuminate\Foundation\Providers\ArtisanServiceProvider
\Illuminate\Foundation\Providers\ComposerServiceProvider

加载defered类型的服务

执行commands()注入函数

给console应用的启动器bootstrapper增加命令,命令是写在D:\03www2018\study\myblog\app\Console\commands,每个命令文件得继承于Illuminate\Console\Command
读取console的路由配置文件

第02步console应用(artisan)启动(bootstrap)

遍历artisan中的bootstrapers();

第03步artisan运行

this>getArtisan()>run(input, $output);
触发命令开始前事件
触发命令开始后事件

原创粉丝点击