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);
触发命令开始前事件
触发命令开始后事件