快速生成中间件

可以使用下面的指令生成一个中间件类。

  1. >php think make:middleware Auth

会自动生成一个 app\middleware\Auth类文件。

创建验证器类

可以使用

  1. >php think make:validate index@User

生成一个 app\index\validate\User验证器类,然后添加自己的验证规则和错误信息。

清除缓存文件

如果需要清除应用的缓存文件,可以使用下面的命令:

  1. php think clear

不带任何参数调用clear命令的话,会清除runtime目录(包括模板缓存、日志文件及其子目录)下面的所有的文件,但会保留目录。

如果不需要保留空目录,可以使用

  1. php think clear --dir

清除日志目录

  1. php think clear --log

清除日志目录并删除空目录

  1. php think clear --log --dir

清除数据缓存目录

  1. php think clear --cache

清除数据缓存目录并删除空目录

  1. php think clear --cache --dir

如果需要清除某个指定目录下面的文件,可以使用:

  1. php think clear --path d:\www\tp\runtime\log\

输出并生成路由列表

假设你的路由定义文件内容为:

  1. Route::get('think', function () {
  2. return 'hello,ThinkPHP6!';
  3. });
  4. Route::resource('blog', 'Blog');
  5. Route::get('hello/:name', 'index/hello')->ext('html');

可以使用下面的指令查看定义的路由列表

  1. php think route:list

如果是多应用模式的话,需要改成

  1. php think route:list index

输出结果类似于下面的显示:

  1. +----------------+-------------+--------+-------------+
  2. | Rule | Route | Method | Name |
  3. +----------------+-------------+--------+-------------+
  4. | think | <Closure> | get | |
  5. | hello/<name> | index/hello | get | index/hello |
  6. | blog | Blog/index | get | Blog/index |
  7. | blog | Blog/save | post | Blog/save |
  8. | blog/create | Blog/create | get | Blog/create |
  9. | blog/<id>/edit | Blog/edit | get | Blog/edit |
  10. | blog/<id> | Blog/read | get | Blog/read |
  11. | blog/<id> | Blog/update | put | Blog/update |
  12. | blog/<id> | Blog/delete | delete | Blog/delete |
  13. +----------------+-------------+--------+-------------+

并且同时会在runtime目录下面生成一个route_list.php的文件,内容和上面的输出结果一致,方便你随时查看。

如果你的路由定义发生改变的话, 则需要重新调用该指令,会自动更新上面生成的缓存文件。

输出样式

支持定义不同的样式输出,例如:

  1. php think route:list box

输出结果变为:

  1. ┌────────────────┬─────────────┬────────┬─────────────┐
  2. Rule Route Method Name
  3. ├────────────────┼─────────────┼────────┼─────────────┤
  4. think <Closure> get
  5. hello/<name> index/hello get index/hello
  6. blog Blog/index get Blog/index
  7. blog Blog/save post Blog/save
  8. blog/create Blog/create get Blog/create
  9. blog/<id>/edit │ Blog/edit get Blog/edit
  10. blog/<id> Blog/read get Blog/read
  11. blog/<id> Blog/update put Blog/update
  12. blog/<id> Blog/delete delete Blog/delete
  13. └────────────────┴─────────────┴────────┴─────────────┘
  14. php think route:list box-double

输出结果变为:

  1. ╔════════════════╤═════════════╤════════╤═════════════╗
  2. Rule Route Method Name
  3. ╠────────────────╪─────────────╪────────╪─────────────╣
  4. think <Closure> get
  5. hello/<name> index/hello get index/hello
  6. blog Blog/index get Blog/index
  7. blog Blog/save post Blog/save
  8. blog/create Blog/create get Blog/create
  9. blog/<id>/edit │ Blog/edit get Blog/edit
  10. blog/<id> Blog/read get Blog/read
  11. blog/<id> Blog/update put Blog/update
  12. blog/<id> Blog/delete delete Blog/delete
  13. ╚════════════════╧═════════════╧════════╧═════════════╝
  14. php think route:list markdown

输出结果变为:

  1. | Rule | Route | Method | Name |
  2. |----------------|-------------|--------|-------------|
  3. | think | <Closure> | get | |
  4. | hello/<name> | index/hello | get | index/hello |
  5. | blog | Blog/index | get | Blog/index |
  6. | blog | Blog/save | post | Blog/save |
  7. | blog/create | Blog/create | get | Blog/create |
  8. | blog/<id>/edit | Blog/edit | get | Blog/edit |
  9. | blog/<id> | Blog/read | get | Blog/read |
  10. | blog/<id> | Blog/update | put | Blog/update |
  11. | blog/<id> | Blog/delete | delete | Blog/delete |

排序支持

如果你希望生成的路由列表按照路由规则排序,可以使用

  1. php think route:list -s rule

输出结果变成:

  1. +----------------+-------------+--------+-------------+
  2. | Rule | Route | Method | Name |
  3. +----------------+-------------+--------+-------------+
  4. | blog | Blog/index | get | Blog/index |
  5. | blog | Blog/save | post | Blog/save |
  6. | blog/<id> | Blog/read | get | Blog/read |
  7. | blog/<id> | Blog/update | put | Blog/update |
  8. | blog/<id> | Blog/delete | delete | Blog/delete |
  9. | blog/<id>/edit | Blog/edit | get | Blog/edit |
  10. | blog/create | Blog/create | get | Blog/create |
  11. | hello/<name> | index/hello | get | index/hello |
  12. | think | <Closure> | get | |
  13. +----------------+-------------+--------+-------------+

同样的,你还可以按照请求类型排序

  1. php think route:list -s method

输出结果变为:

  1. +----------------+-------------+--------+-------------+
  2. | Rule | Route | Method | Name |
  3. +----------------+-------------+--------+-------------+
  4. | blog/<id> | Blog/delete | delete | Blog/delete |
  5. | think | <Closure> | get | |
  6. | hello/<name> | index/hello | get | index/hello |
  7. | blog | Blog/index | get | Blog/index |
  8. | blog/create | Blog/create | get | Blog/create |
  9. | blog/<id>/edit | Blog/edit | get | Blog/edit |
  10. | blog/<id> | Blog/read | get | Blog/read |
  11. | blog | Blog/save | post | Blog/save |
  12. | blog/<id> | Blog/update | put | Blog/update |
  13. +----------------+-------------+--------+-------------+

支持排序的字段名包括:ruleroutenamemethoddomain(全部小写)。

输出详细信息

如果你希望看到更多的路由参数和变量规则,可以使用

  1. php think route:list -m

输出结果变为:

  1. +----------------+-------------+--------+-------------+--------+-------------------------+---------+
  2. | Rule | Route | Method | Name | Domain | Option | Pattern |
  3. +----------------+-------------+--------+-------------+--------+-------------------------+---------+
  4. | think | <Closure> | get | | | [] | [] |
  5. | hello/<name> | index/hello | get | index/hello | | {"ext":"html"} | [] |
  6. | blog | Blog/index | get | Blog/index | | {"complete_match":true} | [] |
  7. | blog | Blog/save | post | Blog/save | | {"complete_match":true} | [] |
  8. | blog/create | Blog/create | get | Blog/create | | [] | [] |
  9. | blog/<id>/edit | Blog/edit | get | Blog/edit | | [] | [] |
  10. | blog/<id> | Blog/read | get | Blog/read | | [] | [] |
  11. | blog/<id> | Blog/update | put | Blog/update | | [] | [] |
  12. | blog/<id> | Blog/delete | delete | Blog/delete | | [] | [] |
  13. +----------------+-------------+--------+-------------+--------+-------------------------+---------+

创建自定义指令

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

  1. php think make:command Hello hello

会生成一个app\command\Hello命令行指令类,我们修改内容如下:

  1. <?php
  2. namespace app\command;
  3. use think\console\Command;
  4. use think\console\Input;
  5. use think\console\input\Argument;
  6. use think\console\input\Option;
  7. use think\console\Output;
  8. class Hello extends Command
  9. {
  10. protected function configure()
  11. {
  12. $this->setName('hello')
  13. ->addArgument('name', Argument::OPTIONAL, "your name")
  14. ->addOption('city', null, Option::VALUE_REQUIRED, 'city name')
  15. ->setDescription('Say Hello');
  16. }
  17. protected function execute(Input $input, Output $output)
  18. {
  19. $name = trim($input->getArgument('name'));
  20. $name = $name ?: 'thinkphp';
  21. if ($input->hasOption('city')) {
  22. $city = PHP_EOL . 'From ' . $input->getOption('city');
  23. } else {
  24. $city = '';
  25. }
  26. $output->writeln("Hello," . $name . '!' . $city);
  27. }
  28. }

这个文件定义了一个叫hello的命令,并设置了一个name参数和一个city选项。

第二步,配置config/console.php文件

  1. <?php
  2. return [
  3. 'commands' => [
  4. 'hello' => 'app\command\Hello',
  5. ]
  6. ];

第三步,测试-命令帮助-命令行下运行

  1. php think

输出

  1. Think Console version 0.1
  2. Usage:
  3. command [options] [arguments]
  4. Options:
  5. -h, --help Display this help message
  6. -V, --version Display this console version
  7. -q, --quiet Do not output any message
  8. --ansi Force ANSI output
  9. --no-ansi Disable ANSI output
  10. -n, --no-interaction Do not ask any interactive question
  11. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
  12. Available commands:
  13. build Build Application Dirs
  14. clear Clear runtime file
  15. hello Say Hello
  16. help Displays help for a command
  17. list Lists commands
  18. make
  19. make:controller Create a new resource controller class
  20. make:model Create a new model class
  21. optimize
  22. optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.
  23. optimize:config Build config and common file cache.
  24. optimize:schema Build database schema cache.

第四步,运行hello命令

  1. php think hello

输出

  1. Hello thinkphp!

添加命令参数

  1. php think hello kancloud

输出

  1. Hello kancloud!

添加city选项

  1. php think hello kancloud --city shanghai

输出

  1. Hello kancloud!
  2. From shanghai

注意看参数和选项的调用区别

如果需要生成一个指定的命名空间,可以使用:

  1. php think make:command app\index\Command second

在控制器中调用命令

支持在控制器的操作方法中直接调用命令,例如:

  1. <?php
  2. namespace app\index\controller;
  3. use think\facade\Console;
  4. class Index
  5. {
  6. public function hello($name)
  7. {
  8. $output = Console::call('hello', [$name]);
  9. return $output->fetch();
  10. }
  11. }

访问该操作方法后,例如:

  1. http://serverName/index/hello/name/thinkphp

页面会输出

  1. Hello thinkphp!

更多相关文章

  1. PHP:【实战】用composer自撸框架
  2. PHP:【ThinkPHP】=>下载、安装、运行Thinkphp6 /安装view /写增
  3. 教你解决硬盘提示文件或目录损坏且无法读取的办法
  4. 目录变文件怎么修复??
  5. 【ThinkPHP框架】tp6.0框架安装、控制器、视图、配置文件、数据
  6. PHP:文件上传上传限制,文件大小不超过5M,文件后缀设置,检查图片合
  7. 【自撸框架】PHP实战利用composer自撸一个MVC小框架
  8. 5.)PHPWeb开发框架~laravel目录结构分析
  9. 6.)PHPWeb开发框架~laravel几种启动方式介绍

随机推荐

  1. Linux环境下注册函数的调用顺序
  2. 浅谈如何学习linux
  3. 软交换FreeSWITCH系统概要和源代码分析预
  4. linux终端常用快捷键
  5. Linux程序设计——文件操作(标准I/O库)
  6. Linux之profile、bash_profile、bashrc文
  7. Linux系统中配置YUM
  8. 如何在init.d上重启Jar文件?
  9. 从QQ浏览器缓存文件中提取出完整的视频
  10. linux下开启mysql慢查询,分析查询语句