Rumah > rangka kerja php > Laravel > 如何实现 laravel 的artisan

如何实现 laravel 的artisan

藏色散人
Lepaskan: 2020-10-22 17:47:43
ke hadapan
2310 orang telah melayarinya

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

以上是简单的实现
Salin selepas log masuk
#!/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();

这里演示了如何接收参数
Salin selepas log masuk
#!/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
Salin selepas log masuk
$output->writeln("<info>hello {$name}</info>");
$output->writeln("<error>hello {$name}</error>");
$output->writeln("<comment>hello {$name}</comment>");
$output->writeln("hello {$name}");

可以给它们加上颜色
Salin selepas log masuk

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

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
Salin selepas log masuk
<?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}");
    }
}
Salin selepas log masuk
composer.json
Salin selepas log masuk
{
    "name": "baidu/artisan",
    "authors": [
        {
            "name": "gaobingbing",
            "email": "v_gaobingbing01@baidu.com"
        }
    ],
    "require": {
        "symfony/console": "^4.3"
    },
    "autoload":  {
        "psr-4": {
            "Artisan\\": "src"
        }
    }
}

至此大功告成,还有其他功能可以去看Symfony文档
Salin selepas log masuk

Atas ialah kandungan terperinci 如何实现 laravel 的artisan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:cnblogs.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan