资讯专栏INFORMATION COLUMN

如何写一个 Laravel 的 Artisan 命令行工具?

DandJ / 1279人阅读

摘要:使用命令行输出在项目的根目录下面执行。控制台命令的名称。执行这样就很简单的写出了第一个命令行使用启动一个服务我们创建一个服务命令。

Artisan 是 Laravel 自带的命令行接口,它提供了许多实用的命令来帮助你构建 Laravel 应用

开始接触 Laravel 这个框架的时候,才发现竟然可以使用命令行去执行一些操作,比如:创建文件,运行一个服务等.出于学习或者不能满足需求的时候,我们就需要自己去写一个 Artisan 命令行。

使用命令行输出 Hello

在项目的根目录下面执行 php artisan make:command Hello。该命令的结果会在 appConsole 下面创建一个 Commands 的文件夹,并且创建 Hello.php


app/Console/Commands 下面的命令都会自动注册到 Artisan,看这个文件app/Console/Kernel.php

    protected function commands()
    {
        $this->load(__DIR__."/Commands");

        require base_path("routes/console.php");
    }

你也可以调用 load 方法添加你的其他 Commands 文件夹

执行 php artisan

执行 php artisan hello


这样就很简单的写出了第一个 Artisan 命令行

使用 Artisan 启动一个服务

我们创建一个服务命令 php artisan make:command SwooleStart

on("connect", function ($serv, $fd) {
            echo "Client: Connect.
";
        });

        //监听数据接收事件
        $serv->on("receive", function ($serv, $fd, $from_id, $data) {
            $serv->send($fd, "Server: ".$data);
        });

        //监听连接关闭事件
        $serv->on("close", function ($serv, $fd) {
            echo "Client: Close.
";
        });

        //启动服务器
        $serv->start();
    }
}

执行 php artisan swoole:start

在打开一个命令行窗口 输入telnet 127.0.0.1 9501 用来监听这个端口,

这样就成功的使用 Artisan 启动了一个服务。

当然你也可以询问是否启动

使用 ask 方法

public function handle()
    {
        if ($this->ask("是否启动 swlloe,请输入 yes") != "yes") {
            die;
        }
        $serv = new swoole_server("127.0.0.1", 9501);

        //监听连接进入事件
        $serv->on("connect", function ($serv, $fd) {
            echo "Client: Connect.
";
        });

        //监听数据接收事件
        $serv->on("receive", function ($serv, $fd, $from_id, $data) {
            $serv->send($fd, "Server: " . $data);
        });

        //监听连接关闭事件
        $serv->on("close", function ($serv, $fd) {
            echo "Client: Close.
";
        });

        //启动服务器
        $serv->start();
    }

像 Artisan 那样创建文件

我们先创建一个命令行文件 php artisan make:MakeController

修改继承 Commanduse IlluminateConsoleGeneratorCommand;


appConsolecommands下创建一个模板目录 stubs,里面存放要生成文件的模板,创建 controller.stub


在执行 Artisan 是会将 DummyClass 等以 Dummy 开头的替换为你的参数,替换代码可以看 GeneratorCommand,

getDefaultNamespace 修改你的文件存放目录

getStub是必须实现的方法。

执行 php artisan controller:make HelloController 你将会在 Httpcontroller 下面看到你使用命令行创建的文件。

创建文件的 handle 在继承的 GeneratorCommand 里面写好了,如果你还需要执行一些其他操作,在当前 command 里面写就好了。

Artlsan 还可以携带参数,还有一些其他的小方法,可以参考 Laravle 的文档。

Laravel 的 Artisan 命令行工具

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30653.html

相关文章

  • 2. Laravel视图View和路由Route初探 - Laravel从零开始教程

    摘要:在程序界最熟悉的莫过于通过输出我们能了解路由和最基础的视图,这一小节,我们主要是学习下如何创建路由,如何加载视图,这节非常简单,跟着做就行。从零开始学教程目录 在程序界最熟悉的莫过于Hello World,通过输出Hello Word,我们能了解路由和最基础的视图,这一小节,我们主要是学习下如何创建路由,如何加载视图,这节非常简单,跟着做就行。 上一节我们通过laravel new 项...

    iliyaku 评论0 收藏0
  • Laravel入门及实践,快速上手ThinkSNS+二次开发

    摘要:在中,提示符可能是。框架使用来执行安装及管理依赖。为了能访问网页,要启动程序服务器。在大多数类系统中,包括,命令行提示符是符号。这两个操作分别对应于的和,即创建和读取。首个表单要在模板中编写表单,可以使用表单构造器。 【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们...

    objc94 评论0 收藏0
  • Laravel入门及实践,快速上手ThinkSNS+二次开发

    摘要:在中,提示符可能是。框架使用来执行安装及管理依赖。为了能访问网页,要启动程序服务器。在大多数类系统中,包括,命令行提示符是符号。这两个操作分别对应于的和,即创建和读取。首个表单要在模板中编写表单,可以使用表单构造器。 【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们...

    glumes 评论0 收藏0
  • Laravel入门及实践,快速上手ThinkSNS+二次开发

    摘要:在中,提示符可能是。框架使用来执行安装及管理依赖。为了能访问网页,要启动程序服务器。在大多数类系统中,包括,命令行提示符是符号。这两个操作分别对应于的和,即创建和读取。首个表单要在模板中编写表单,可以使用表单构造器。 【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们...

    heartFollower 评论0 收藏0
  • Laravel 5系列教程四:数据库和Eloquent

    摘要:原文来自免费视频教程地址上一篇写了一些的基本用法和给视图传递变量的几种方式,这一节我们来说说跟数据库打交道的数据库配置和强大的。 原文来自: https://jellybool.com/post/programming-with-laravel-5-database-and-eloquent-model 免费视频教程地址 https://laravist.com/series/lara...

    XFLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<