首页 > php框架 > Laravel > 如何实现 laravel 的artisan

如何实现 laravel 的artisan

藏色散人
发布: 2020-10-22 17:47:43
转载
2321 人浏览过

下面由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();

以上是简单的实现
登录后复制
#!/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();

这里演示了如何接收参数
登录后复制
#!/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
登录后复制
$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 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
登录后复制
<?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}");
    }
}
登录后复制
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的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:cnblogs.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板