如何實現 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 分享