下面由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__.'/../vendor/autoload.php'; $app = new Application('artisan','1.1.1'); $app->register('artisan')->setCode(function(InputInterface?$input,?OutputInterface?$output){ ????$output->writeln('artisan?start'); }); $app->run(); exit(); 以上是簡單的實現
#!/usr/bin/env?php <?php use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleInputInputArgument; require_once __DIR__ . '/../vendor/autoload.php'; $app = new Application('artisan', '1.1.1'); $app->register('artisan') ????->setDescription('myself?artisan?description') ????->setCode( ????????function?(InputInterface?$input,?OutputInterface?$output)?{ ????????????$name?=?$input->getArgument('name'); ????????????$output->writeln("hello?{$name}"); ????????} ????)->addArgument('name',?InputArgument::REQUIRED,?'please?input?your?name'); $app->run(); exit(); 這里演示了如何接收參數
#!/usr/bin/env?php <?php use SymfonyComponentConsoleApplication; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleInputInputArgument; use SymfonyComponentConsoleInputInputOption; require_once __DIR__ . '/../vendor/autoload.php'; $app = new Application('artisan', '1.1.1'); $app->register('artisan') ????->setDescription('myself?artisan?description') ????->setCode( ????????function?(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("hello?{$name}"); ????????} ????)->addArgument('name',?InputArgument::REQUIRED,?'please?input?your?name') ????->addOption('string',null,InputOption::VALUE_OPTIONAL,'轉換字符串大小','lower') ; $app->run(); exit(); 這里演示了如何給命令行添加選項?./bin/artisan.php?artisan?ffff?--string='upper'???echo??FFFF
$output->writeln("<info>hello?{$name}</info>"); $output->writeln("<error>hello?{$name}</error>"); $output->writeln("<comment>hello?{$name}</comment>"); $output->writeln("hello?{$name}"); 可以給它們加上顏色
接下來將命令行拆分為文件
bin/artisan.php
ArtisanCommand.php
#!/usr/bin/env?php <?php use SymfonyComponentConsoleApplication; use ArtisanArtisanCommand; require_once __DIR__ . '/../vendor/autoload.php'; $app = new Application('artisan', '1.1.1'); $app->add(new?ArtisanCommand()); $app->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
喜歡就支持一下吧
相關推薦