ThinkPHP自定义指令

简介: ThinkPHP自定义指令

官网文档

https://www.kancloud.cn/manual/thinkphp6_0/1037651

创建命令类文件

运行指令创建一个自定义命令类文件

php think make:command Hello hello

生成内容如下

<?php
namespace app\command;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
class Hello extends Command
{
    protected function configure()
    {
        $this->setName('hello')
          ->addArgument('name', Argument::OPTIONAL, "your name")
            ->addOption('city', null, Option::VALUE_REQUIRED, 'city name')
          ->setDescription('Say Hello');
    }
    protected function execute(Input $input, Output $output)
    {
      $name = trim($input->getArgument('name'));
        $name = $name ?: 'thinkphp';
    if ($input->hasOption('city')) {
          $city = PHP_EOL . 'From ' . $input->getOption('city');
        } else {
          $city = '';
        }
        
        $output->writeln("Hello," . $name . '!' . $city);
    }
}

配置config/console.php文件

<?php
return [
    'commands' => [
        'hello' => 'app\command\Hello',
    ]
];

使用命令执行指令

php think hello

在宝塔面板中配置计划任务

常用指令文件

创建表

<?php
declare (strict_types = 1);
namespace app\command;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Exception;
use think\facade\Db;
class CreateTable extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('start')
            ->setDescription('每日创建日志数据表');
    }
    //创建表
    protected function execute(Input $input, Output $output)
    {
        $tableList = [
            'device_log'
        ];
        foreach ($tableList as $tblpre) {
            // 检查今天的表
            $tbldate = date('ymd');
            $res = Db::execute("show tables like '{$tblpre}{$tbldate}'");
            if ($res === 0) {
                $output->writeln('补建今天的表'.$tbldate);
                Db::execute("create table {$tblpre}{$tbldate} like {$tblpre}");
            }
            //创建明天的表
            try {
                $tblnextdate = date('ymd', strtotime('+1 day'));
                $res = Db::execute("show tables like '{$tblpre}{$tblnextdate}'");
                if ($res === 0) {
                    Db::execute("create table {$tblpre}{$tblnextdate} like {$tblpre}");
                    $output->writeln('创建明天的表'.$tblnextdate);
                }
            } catch (Exception $exception) {
                echo $exception->getMessage();
            }
        }
    }
}
相关文章
|
7月前
|
开发框架 监控 JavaScript
基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结
基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结
|
8月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的博客系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的博客系统附带文章和源代码部署视频讲解等
50 0
|
8月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的个人网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的个人网站附带文章和源代码部署视频讲解等
32 0
|
9月前
|
JavaScript 前端开发
基于Vue.js的简易博客系统设计与实现
基于Vue.js的简易博客系统设计与实现
179 0
|
9月前
|
JavaScript 前端开发 API
Vue 3自定义指令:扩展你的应用功能
Vue 3自定义指令:扩展你的应用功能
|
9月前
|
JavaScript 前端开发 测试技术
在vue中如何书写 SSR 友好的代码
在vue中如何书写 SSR 友好的代码
108 0
|
JavaScript
都用Vue3了吧?自定义指令用过没!
前言 Vue提供了各种各样的指令供我们使用,比如v-model、v-bind等等,可以说指令是Vue的重要功能点之一。除了Vue内置的一些指令外,Vue还允许我们自己定义指令,相信学过Vue的小伙伴应该都或多或少知道自定义指令,自定义指令在有些场景下非常的好用,它可以为我们省去超过工作量。 但是Vue3和Vue2中的自定义指令有一些区别,今天我们就重点学习一下Vue3中自定义指令如何使用?
384 0
都用Vue3了吧?自定义指令用过没!
|
JavaScript 前端开发 容器
熹微~~~基于Vue开发的昏暗风格的响应式网页!
熹微~~~基于Vue开发的昏暗风格的响应式网页!
191 1
|
JavaScript
Vue富文本编辑器使用教程
Vue富文本编辑器使用教程
267 0
|
JavaScript 前端开发 API
VUE 脚手架框架 编写一个简洁的登录界面
一个好的前端开发项目,都是一个团队负责一个部分进行通力合作的。简单的一个系统网站一般包含登录、主体、各个模块功能这三个大部分,现在我们写的登录界面,我们一般编写这样的登录界面可以说有一定的固定套路。
VUE 脚手架框架 编写一个简洁的登录界面