最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何实现 laravel 的artisan

来源:动视网 责编:小采 时间:2020-11-02 18:01:43
文档

如何实现 laravel 的artisan

如何实现 laravel 的artisan:下面由Laravel教程栏目给大家介绍实现 laravel 的artisan 的方法,希望对需要的朋友有所帮助!laravel 的 artisan 命令行太好用了,换个框架没有这个功能,于是自己学习实现一些,直接上代码新建目录-artisan--bin--src进入artisan com
推荐度:
导读如何实现 laravel 的artisan:下面由Laravel教程栏目给大家介绍实现 laravel 的artisan 的方法,希望对需要的朋友有所帮助!laravel 的 artisan 命令行太好用了,换个框架没有这个功能,于是自己学习实现一些,直接上代码新建目录-artisan--bin--src进入artisan com
 下面由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文档

文档

如何实现 laravel 的artisan

如何实现 laravel 的artisan:下面由Laravel教程栏目给大家介绍实现 laravel 的artisan 的方法,希望对需要的朋友有所帮助!laravel 的 artisan 命令行太好用了,换个框架没有这个功能,于是自己学习实现一些,直接上代码新建目录-artisan--bin--src进入artisan com
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top