如何实现 laravel 的artisan

下面由laravel教程栏目给大家介绍实现 laravel 的artisan 的方法,希望对需要的朋友有所帮助!

laravel 的 artisan 命令行太好用了,换个框架没有这个功能,于是自己学习实现一些,直接上代码

新建目录

-artisan

–bin

–src

进入artisan composer init    

composer require symfony/console

#!/usr/bin/env php <?php use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface;  require_once __DIR__.&#39;/../vendor/autoload.php&#39;;  $app = new Application(&#39;artisan&#39;,&#39;1.1.1&#39;);  $app->register('artisan')-&gt;setCode(function(InputInterface $input, OutputInterface $output){     $output-&gt;writeln('artisan start'); });  $app-&gt;run();  exit();  以上是简单的实现
#!/usr/bin/env php <?php use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleInputInputArgument;  require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;  $app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);  $app->register('artisan')     -&gt;setDescription('myself artisan description')     -&gt;setCode(         function (InputInterface $input, OutputInterface $output) {             $name = $input-&gt;getArgument('name');             $output-&gt;writeln("hello {$name}");         }     )-&gt;addArgument('name', InputArgument::REQUIRED, 'please input your name');  $app-&gt;run();  exit();  这里演示了如何接收参数
#!/usr/bin/env php <?php use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleInputInputArgument; use SymfonyComponentConsoleInputInputOption;  require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;  $app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);  $app->register('artisan')     -&gt;setDescription('myself artisan description')     -&gt;setCode(         function (InputInterface $input, OutputInterface $output) {             $string = $input-&gt;getOption('string');             $name = $input-&gt;getArgument('name');             if($string == 'lower'){                 $name = strtolower($name);             }             if($string == 'upper'){                 $name = strtoupper($name);             }             $output-&gt;writeln("hello {$name}");         }     )-&gt;addArgument('name', InputArgument::REQUIRED, 'please input your name')     -&gt;addOption('string',null,InputOption::VALUE_OPTIONAL,'转换字符串大小','lower') ;  $app-&gt;run();  exit();  这里演示了如何给命令行添加选项 ./bin/artisan.php artisan ffff --string='upper'   echo  FFFF
$output-&gt;writeln("<info>hello {$name}</info>"); $output-&gt;writeln("<error>hello {$name}</error>"); $output-&gt;writeln("<comment>hello {$name}</comment>"); $output-&gt;writeln("hello {$name}");  可以给它们加上颜色

如何实现 laravel 的artisan

接下来将命令行拆分为文件

如何实现 laravel 的artisan

bin/artisan.php

ArtisanCommand.php

#!/usr/bin/env php <?php use SymfonyComponentConsoleApplication; use ArtisanArtisanCommand; require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;  $app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);  $app->add(new ArtisanCommand());  $app-&gt;run();  exit();   ArtisanCommand.php
<?php namespace Artisan;  use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleInputInputArgument; use SymfonyComponentConsoleInputInputOption; use SymfonyComponentConsoleCommandCommand;  class ArtisanCommand extends Command{     public function configure()     {         $this->setName('artisan');         $this->setDescription('myself artisan description')         ->addArgument('name', InputArgument::REQUIRED, 'please input your name')         ->addOption('string',null,InputOption::VALUE_OPTIONAL,'转换字符串大小','lower');     }      public function execute(InputInterface $input, OutputInterface $output)     {         $string = $input->getOption('string');         $name = $input->getArgument('name');         if($string == 'lower'){             $name = strtolower($name);         }         if($string == 'upper'){             $name = strtoupper($name);         }         $output->writeln("<info>hello {$name}</info>");         $output->writeln("<error>hello {$name}</error>");         $output->writeln("<comment>hello {$name}</comment>");         $output->writeln("hello {$name}");     } }
composer.json
{     "name": "baidu/artisan",     "authors": [         {             "name": "gaobingbing",             "email": "v_gaobingbing01@baidu.com"         }     ],     "require": {         "symfony/console": "^4.3"     },     "autoload":  {         "psr-4": {             "Artisan": "src"         }     } }  至此大功告成,还有其他功能可以去看Symfony文档

以上就是如何实现

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享