Home > PHP Framework > Laravel > How to implement laravel's artisan

How to implement laravel's artisan

藏色散人
Release: 2020-10-22 17:47:43
forward
2309 people have browsed it

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

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

新建目录

-artisan

--bin

--src

进入artisan composer init    

composer require symfony/console

#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

require_once __DIR__.&#39;/../vendor/autoload.php&#39;;

$app = new Application(&#39;artisan&#39;,&#39;1.1.1&#39;);

$app->register(&#39;artisan&#39;)->setCode(function(InputInterface $input, OutputInterface $output){
    $output->writeln(&#39;artisan start&#39;);
});

$app->run();

exit();

以上是简单的实现
Copy after login
#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;

require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;

$app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);

$app->register(&#39;artisan&#39;)
    ->setDescription(&#39;myself artisan description&#39;)
    ->setCode(
        function (InputInterface $input, OutputInterface $output) {
            $name = $input->getArgument(&#39;name&#39;);
            $output->writeln("hello {$name}");
        }
    )->addArgument(&#39;name&#39;, InputArgument::REQUIRED, &#39;please input your name&#39;);

$app->run();

exit();

这里演示了如何接收参数
Copy after login
#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;

require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;

$app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);

$app->register(&#39;artisan&#39;)
    ->setDescription(&#39;myself artisan description&#39;)
    ->setCode(
        function (InputInterface $input, OutputInterface $output) {
            $string = $input->getOption(&#39;string&#39;);
            $name = $input->getArgument(&#39;name&#39;);
            if($string == &#39;lower&#39;){
                $name = strtolower($name);
            }
            if($string == &#39;upper&#39;){
                $name = strtoupper($name);
            }
            $output->writeln("hello {$name}");
        }
    )->addArgument(&#39;name&#39;, InputArgument::REQUIRED, &#39;please input your name&#39;)
    ->addOption(&#39;string&#39;,null,InputOption::VALUE_OPTIONAL,&#39;转换字符串大小&#39;,&#39;lower&#39;)
;

$app->run();

exit();

这里演示了如何给命令行添加选项 ./bin/artisan.php artisan ffff --string=&#39;upper&#39;   echo  FFFF
Copy after login
$output->writeln("<info>hello {$name}</info>");
$output->writeln("<error>hello {$name}</error>");
$output->writeln("<comment>hello {$name}</comment>");
$output->writeln("hello {$name}");

可以给它们加上颜色
Copy after login

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

bin/artisan.php

ArtisanCommand.php

#!/usr/bin/env php
<?php

use Symfony\Component\Console\Application;
use Artisan\ArtisanCommand;
require_once __DIR__ . &#39;/../vendor/autoload.php&#39;;

$app = new Application(&#39;artisan&#39;, &#39;1.1.1&#39;);

$app->add(new ArtisanCommand());

$app->run();

exit();


ArtisanCommand.php
Copy after login
<?php
namespace Artisan;

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Command\Command;

class ArtisanCommand extends Command{
    public function configure()
    {
        $this->setName(&#39;artisan&#39;);
        $this->setDescription(&#39;myself artisan description&#39;)
        ->addArgument(&#39;name&#39;, InputArgument::REQUIRED, &#39;please input your name&#39;)
        ->addOption(&#39;string&#39;,null,InputOption::VALUE_OPTIONAL,&#39;转换字符串大小&#39;,&#39;lower&#39;);
    }

    public function execute(InputInterface $input, OutputInterface $output)
    {
        $string = $input->getOption(&#39;string&#39;);
        $name = $input->getArgument(&#39;name&#39;);
        if($string == &#39;lower&#39;){
            $name = strtolower($name);
        }
        if($string == &#39;upper&#39;){
            $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}");
    }
}
Copy after login
composer.json
Copy after login
{
    "name": "baidu/artisan",
    "authors": [
        {
            "name": "gaobingbing",
            "email": "v_gaobingbing01@baidu.com"
        }
    ],
    "require": {
        "symfony/console": "^4.3"
    },
    "autoload":  {
        "psr-4": {
            "Artisan\\": "src"
        }
    }
}

至此大功告成,还有其他功能可以去看Symfony文档
Copy after login

The above is the detailed content of How to implement laravel's artisan. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:cnblogs.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template