zoukankan      html  css  js  c++  java
  • Laravel入坑指南(8)——控制台程序

    我们知道,php代码不仅可以用web的形式对外提供服务,同时也可以在命令行下执行。

    对于原生的php来说,假设我们有一个php文件,名为Command.php,如果想要在控制台下执行这个文件,那么我们有两种办法:

    方法一:(适用于Windows和Linux)

    php Command.php
    #如果$PATH中的php不是你的目标php,那么可以指定php的绝对路径
    /www/server/php/bin/php Command.php
    #Command.php正常情况下也会指明绝对路径

    方法二:(仅适用于Linux)

    在Command.php的第一行指明解释器路径

    #!/www/server/php/bin/php
    <?php
    //这里写php代码
    echo "hello php";

    然后将Command.php赋上x(可执行)权限,在控制台下输入./Command.php即可运行

    同样的,因为Laravel是以php为基本语言的框架,同样可以支持在控制台运行。在Laravel框架体系统,规定了一套创建适用于本框架的方法。现在就让我们一起创建并运行Laravel的控制台程序:

    步骤一:利用artisian创建控制台程序类

    php artisan make:command TestCmd --command=Test

    这一句命令运行之后,文件/app/Console/Commands/TestCmd.php就会被创建。命令中的TestCmd是创建的文件名(也是类名),Test是控制台执行命令时,用到的名字。

    在创建的TestCmd类中,业务代码就写在handle()函数中。

    步骤二:控制台执行

    php artisan Test    #这里的Test就是建时--command参数指定的名字

    步骤三:控制台参数的传递

    在TestCmd.php创建的时候,我们在--command指定了一个调用参数,名字叫Test。这个参数,是执行是用到的名字,也是TestCmd类中的$signature成员的值。

     接下来,我们要讨论的参数传递有两种方式,都和这个$signature成员有关。在Laravel中通过控制台向业务代码传递参数,都需要在$signature进行配置,这里我们用具体的例子来说明:

    示例一:

     调用时,我们使用命令:

    php artisan Test Jack

    在handle()函数中我们使用argument()成员函数,便可以得到Jack这个值。因为在$signature中用的配置是{user?},所以这个参数是可选的;如果没有那个?号则参数就是必须的:

    public function handle()
    {
        $this->info($this->argument("user"));
    }

    示例二:

    调用时,我们使用命令:

    php artisan Test --id=Jack

    在handle()函数中我们使用option()成员函数便可以得到对应的参数值,这里的id选项是可选的,当控制台没有传递时,取到的则是NULL:

    public function handle()
    {
        echo $this->option("id");
    }

    上面两种示例的参数类型可以混合使用。

    到这里,命令行这一话题就接近尾声了。天色也不早了,大家下期见: )

    ---------------------------  我是可爱的分割线  ----------------------------

    最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13382557.html
Copyright © 2011-2022 走看看