| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Webman命令行组件
composer require webman/console
注意 以下命令是webman/console v2.2及以上版本的说明,如果你的console缺少某些功能,请及时更新。
生成控制器类。
用法:
php webman make:controller <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 控制器名称(不带后缀) |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成控制器 |
| --path | -P | 自定义控制器路径 |
| --force | -f | 如果文件存在则覆盖 |
| --no-suffix | 不追加 "Controller" 后缀 |
示例:
# 在 app/controller 中创建 UserController
php webman make:controller User
# 在插件中创建
php webman make:controller AdminUser -p admin
# 自定义路径
php webman make:controller User -P app/api/controller
# 覆盖现有文件
php webman make:controller User -f
# 创建时不带 "Controller" 后缀
php webman make:controller UserHandler --no-suffix生成的文件结构:
<?php
namespace app\controller;
use support\Request;
class UserController
{
public function index(Request $request)
{
return response('hello user');
}
}说明:
从数据库表生成模型类,支持 Laravel ORM 与 ThinkORM。
用法:
php webman make:model [名称]参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 否 | 模型类名,交互模式下可省略 |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成模型 |
| --path | -P | 目标目录(相对项目根路径) |
| --table | -t | 指定表名,表名不符合约定时建议显式指定 |
| --orm | -o | 选择 ORM:laravel 或 thinkorm |
| --database | -d | 指定数据库连接名 |
| --force | -f | 覆盖已存在文件 |
路径说明:
示例:
# 在 app/model 中创建 User 模型
php webman make:model User
# 指定表名和 ORM
php webman make:model User -t wa_users -o laravel
# 在插件中创建
php webman make:model AdminUser -p admin
# 自定义路径
php webman make:model User -P plugin/admin/app/model交互模式: 不传名称时进入交互流程:选表 → 输入模型名 → 输入路径。支持:回车查看更多、0 创建空模型、/关键字 过滤表。
生成的文件结构:
<?php
namespace app\model;
use support\Model;
/**
* @property integer $id (主键)
* @property string $name
*/
class User extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
protected $primaryKey = 'id';
public $timestamps = true;
}根据表结构自动生成 @property 注释。支持 MySQL、PostgreSQL。
根据数据库表一次性生成模型、控制器和验证器,形成完整 CRUD 能力。
用法:
php webman make:crud选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --table | -t | 指定表名 |
| --model | -m | 模型类名 |
| --model-path | -M | 模型目录(相对项目根) |
| --controller | -c | 控制器类名 |
| --controller-path | -C | 控制器目录 |
| --validator | 验证器类名(依赖webman/validation) | |
| --validator-path | 验证器目录(依赖webman/validation) | |
| --plugin | -p | 在对应插件目录生成相关文件 |
| --orm | -o | ORM:laravel 或 thinkorm |
| --database | -d | 数据库连接名 |
| --force | -f | 覆盖已存在文件 |
| --no-validator | 不生成验证器 | |
| --no-interaction | -n | 非交互模式,使用默认值 |
执行流程: 未指定 --table 时进入交互选表;模型名默认由表名推断;控制器名默认由模型名 + 控制器后缀;验证器名默认由控制器名去掉后缀 + Validator。各路径默认:模型 app/model/,控制器 app/controller/,验证器 app/validation/;插件下为 plugin/<插件>/app/ 对应子目录。
示例:
# 交互式生成(选表后逐步确认)
php webman make:crud
# 指定表名
php webman make:crud --table=users
# 指定表名和插件
php webman make:crud --table=users --plugin=admin
# 指定各路径
php webman make:crud --table=users --model-path=app/model --controller-path=app/controller
# 不生成验证器
php webman make:crud --table=users --no-validator
# 非交互 + 覆盖
php webman make:crud --table=users --no-interaction --force生成的文件结构:
模型(app/model/User.php):
<?php
namespace app\model;
use support\Model;
class User extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
protected $primaryKey = 'id';
}控制器(app/controller/UserController.php):
<?php
namespace app\controller;
use support\Request;
use support\Response;
use app\model\User;
use app\validation\UserValidator;
use support\validation\annotation\Validate;
class UserController
{
#[Validate(validator: UserValidator::class, scene: 'create', in: ['body'])]
public function create(Request $request): Response
{
$data = $request->post();
$model = new User();
foreach ($data as $key => $value) {
$model->setAttribute($key, $value);
}
$model->save();
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
#[Validate(validator: UserValidator::class, scene: 'update', in: ['body'])]
public function update(Request $request): Response
{
if (!$model = User::find($request->post('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
$data = $request->post();
unset($data['id']);
foreach ($data as $key => $value) {
$model->setAttribute($key, $value);
}
$model->save();
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
#[Validate(validator: UserValidator::class, scene: 'delete', in: ['body'])]
public function delete(Request $request): Response
{
if (!$model = User::find($request->post('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
$model->delete();
return json(['code' => 0, 'msg' => 'ok']);
}
#[Validate(validator: UserValidator::class, scene: 'detail')]
public function detail(Request $request): Response
{
if (!$model = User::find($request->input('id'))) {
return json(['code' => 1, 'msg' => 'not found']);
}
return json(['code' => 0, 'msg' => 'ok', 'data' => $model]);
}
}验证器(app/validation/UserValidator.php):
<?php
declare(strict_types=1);
namespace app\validation;
use support\validation\Validator;
class UserValidator extends Validator
{
protected array $rules = [
'id' => 'required|integer|min:0',
'username' => 'required|string|max:32'
];
protected array $messages = [];
protected array $attributes = [
'id' => '主键',
'username' => '用户名'
];
protected array $scenes = [
'create' => ['username', 'nickname'],
'update' => ['id', 'username'],
'delete' => ['id'],
'detail' => ['id'],
];
}说明:
生成中间件类,并自动注册到 config/middleware.php(插件则为 plugin/<插件>/config/middleware.php)。
用法:
php webman make:middleware <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 中间件名称 |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成中间件 |
| --path | -P | 目标目录(相对项目根路径) |
| --force | -f | 覆盖已存在文件 |
示例:
# 在 app/middleware 中创建 Auth 中间件
php webman make:middleware Auth
# 在插件中创建
php webman make:middleware Auth -p admin
# 自定义路径
php webman make:middleware Auth -P plugin/admin/app/middleware
生成的文件结构:
<?php
namespace app\middleware;
use Webman\MiddlewareInterface;
use Webman\Http\Response;
use Webman\Http\Request;
class Auth implements MiddlewareInterface
{
public function process(Request $request, callable $handler) : Response
{
return $handler($request);
}
}说明:
生成控制台命令类。
用法:
php webman make:command <命令名>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 命令名 | 是 | 命令名称,格式如 group:action(如 user:list) |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成命令 |
| --path | -P | 目标目录(相对项目根路径) |
| --force | -f | 覆盖已存在文件 |
示例:
# 在 app/command 中创建 user:list 命令
php webman make:command user:list
# 在插件中创建
php webman make:command user:list -p admin
# 自定义路径
php webman make:command user:list -P plugin/admin/app/command
# 覆盖现有文件
php webman make:command user:list -f生成的文件结构:
<?php
namespace app\command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand('user:list', 'user list')]
class UserList extends Command
{
protected function configure(): void
{
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('<info>Hello</info> <comment>' . $this->getName() . '</comment>');
return self::SUCCESS;
}
}说明:
生成启动初始化类(Bootstrap),进程启动时会自动调用类的start方法,一般用于在进程启动时做一些全局初始化操作。
用法:
php webman make:bootstrap <名称> 参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | Bootstrap 类名 |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成 |
| --path | -P | 目标目录(相对项目根路径) |
| --force | -f | 覆盖已存在文件 |
示例:
# 在 app/bootstrap 中创建 MyBootstrap
php webman make:bootstrap MyBootstrap
# 创建但不自动启用
php webman make:bootstrap MyBootstrap no
# 在插件中创建
php webman make:bootstrap MyBootstrap -p admin
# 自定义路径
php webman make:bootstrap MyBootstrap -P plugin/admin/app/bootstrap
# 覆盖现有文件
php webman make:bootstrap MyBootstrap -f生成的文件结构:
<?php
namespace app\bootstrap;
use Webman\Bootstrap;
class MyBootstrap implements Bootstrap
{
public static function start($worker)
{
$is_console = !$worker;
if ($is_console) {
return;
}
// ...
}
}说明:
生成自定义进程类,并写入 config/process.php 配置自动启动。
用法:
php webman make:process <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 进程类名(如 MyTcp、MyWebsocket) |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --plugin | -p | 在对应插件目录生成 |
| --path | -P | 目标目录(相对项目根路径) |
| --force | -f | 覆盖已存在文件 |
示例:
# 在 app/process 中创建
php webman make:process MyTcp
# 在插件中创建
php webman make:process MyProcess -p admin
# 自定义路径
php webman make:process MyProcess -P plugin/admin/app/process
# 覆盖现有文件
php webman make:process MyProcess -f交互流程: 执行后会依次询问:是否监听端口 → 协议类型(websocket/http/tcp/udp/unixsocket)→ 监听地址(IP+端口或 unix socket 路径)→ 进程数量。HTTP 协议还会询问使用内置模式或自定义模式。
生成的文件结构:
非监听进程(仅 onWorkerStart):
<?php
namespace app\process;
use Workerman\Worker;
class MyProcess
{
public function onWorkerStart(Worker $worker)
{
// TODO: Write your business logic here.
}
}TCP/WebSocket 等监听进程会生成对应的 onConnect、onMessage、onClose 等回调模板。
说明:
将项目打包为 PHAR 归档文件,便于分发和部署。
用法:
php webman build:phar启动:
进入build目录运行
php webman.phar start注意事项
打包后的项目不支持reload,更新代码需要restart重启
为了避免打包文件尺寸过大占用过多内存,可以设置 config/plugin/webman/console/app.php里的exclude_pattern exclude_files选项将排除不必要的文件。
运行webman.phar后会在webman.phar所在目录生成runtime目录,用于存放日志等临时文件。
如果你的项目里使用了.env文件,需要将.env文件放在webman.phar所在目录。
注意webman.phar不支持在windows下开启自定义进程
切勿将用户上传的文件存储在phar包中,因为以phar://协议操作用户上传的文件是非常危险的(phar反序列化漏洞)。用户上传的文件必须单独存储在phar包之外的磁盘中,参见下面。
如果你的业务需要上传文件到public目录,需要将public目录独立出来放在webman.phar所在目录,这时候需要配置config/app.php。
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',业务可以使用助手函数public_path($文件相对位置)找到实际的public目录位置。
将项目打包为独立二进制文件,内含 PHP 运行时,无需目标环境安装 PHP。
用法:
php webman build:bin [版本]参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 版本 | 否 | PHP 版本号(如 8.1、8.2),默认当前 PHP 版本,最低 8.1 |
示例:
# 使用当前 PHP 版本
php webman build:bin
# 指定 PHP 8.2
php webman build:bin 8.2启动:
进入build目录运行
./webman.bin start注意事项:
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',执行 Webman 框架的安装脚本(调用 \Webman\Install::install()),用于项目初始化。
用法:
php webman install显示 workerman/webman-framework 版本。
用法:
php webman version说明: 从 vendor/composer/installed.php 读取版本,若无法读取则返回失败。
修复 php.ini 中的 disable_functions,移除 Webman 运行所需函数。
用法:
php webman fix-disable-functions说明: 会从 disable_functions 中移除以下函数(及其前缀匹配):stream_socket_server、stream_socket_accept、stream_socket_client、pcntl_*、posix_*、proc_*、shell_exec、exec。若找不到 php.ini 或 disable_functions 为空则跳过。会直接修改 php.ini 文件,建议先备份。
以表格形式列出所有已注册路由。
用法:
php webman route:list输出示例:
+-------+--------+-----------------------------------------------+------------+------+ | URI | 方法 | 回调 | 中间件 | 名称 | +-------+--------+-----------------------------------------------+------------+------+ | /user | GET | ["app\\controller\\UserController","index"] | null | | | /api | POST | 闭包 | ["Auth"] | api | +-------+--------+-----------------------------------------------+------------+------+
输出列: URI、方法、回调、中间件、名称。闭包回调显示为「闭包」。
创建新应用插件,生成 plugin/<名称> 下的完整目录结构和基础文件。
用法:
php webman app-plugin:create <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件名称,需符合 [a-zA-Z0-9][a-zA-Z0-9_-]*,不能含 / 或 \ |
示例:
# 创建名为 foo 的应用插件
php webman app-plugin:create foo
# 创建带连字符的插件
php webman app-plugin:create my-app生成目录结构:
plugin/<名称>/ ├── app/ │ ├── controller/IndexController.php │ ├── model/ │ ├── middleware/ │ ├── view/index/index.html │ └── functions.php ├── config/ # app.php、route.php、menu.php 等 ├── api/Install.php # 安装/卸载/更新钩子 ├── public/ └── install.sql
说明:
安装应用插件,执行 plugin/<名称>/api/Install::install($version)。
用法:
php webman app-plugin:install <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件名称,需符合 [a-zA-Z0-9][a-zA-Z0-9_-]* |
示例:
php webman app-plugin:install foo卸载应用插件,执行 plugin/<名称>/api/Install::uninstall($version)。
用法:
php webman app-plugin:uninstall <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件名称 |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --yes | -y | 跳过确认,直接执行 |
示例:
php webman app-plugin:uninstall foo
php webman app-plugin:uninstall foo -y更新应用插件,依次执行 Install::beforeUpdate($from, $to) 和 Install::update($from, $to, $context)。
用法:
php webman app-plugin:update <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件名称 |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --from | -f | 起始版本,默认当前版本 |
| --to | -t | 目标版本,默认当前版本 |
示例:
php webman app-plugin:update foo
php webman app-plugin:update foo --from 1.0.0 --to 1.1.0将应用插件打包为 ZIP 文件,输出到 plugin/<名称>.zip。
用法:
php webman app-plugin:zip <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件名称 |
示例:
php webman app-plugin:zip foo说明:
创建新 Webman 插件(Composer 包形式),生成 config/plugin/<名称> 配置目录和 vendor/<名称> 插件源码目录。
用法:
php webman plugin:create <名称>
php webman plugin:create --name <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package(如 foo/my-admin),需符合 Composer 包名规范 |
示例:
php webman plugin:create foo/my-admin
php webman plugin:create --name foo/my-admin生成结构:
说明:
执行插件的安装脚本(Install::install()),将插件资源复制到项目目录。
用法:
php webman plugin:install <名称>
php webman plugin:install --name <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package(如 foo/my-admin) |
选项:
| 选项 | 描述 |
|---|---|
| --name | 以选项形式指定插件名,与参数二选一 |
示例:
php webman plugin:install foo/my-admin
php webman plugin:install --name foo/my-admin执行插件的卸载脚本(Install::uninstall()),移除插件复制到项目中的资源。
用法:
php webman plugin:uninstall <名称>
php webman plugin:uninstall --name <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package |
选项:
| 选项 | 描述 |
|---|---|
| --name | 以选项形式指定插件名,与参数二选一 |
示例:
php webman plugin:uninstall foo/my-admin启用插件,将 config/plugin/<名称>/app.php 中的 enable 设为 true。
用法:
php webman plugin:enable <名称>
php webman plugin:enable --name <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package |
选项:
| 选项 | 描述 |
|---|---|
| --name | 以选项形式指定插件名,与参数二选一 |
示例:
php webman plugin:enable foo/my-admin禁用插件,将 config/plugin/<名称>/app.php 中的 enable 设为 false。
用法:
php webman plugin:disable <名称>
php webman plugin:disable --name <名称>参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package |
选项:
| 选项 | 描述 |
|---|---|
| --name | 以选项形式指定插件名,与参数二选一 |
示例:
php webman plugin:disable foo/my-admin将项目中的插件配置及指定目录导出到 vendor/<名称>/src/,并生成 Install.php,便于打包发布。
用法:
php webman plugin:export <名称> [--source=路径]...
php webman plugin:export --name <名称> [--source=路径]...参数:
| 参数 | 必需 | 描述 |
|---|---|---|
| 名称 | 是 | 插件包名,格式为 vendor/package |
选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --name | 以选项形式指定插件名,与参数二选一 | |
| --source | -s | 要导出的路径(相对项目根),可多次指定 |
示例:
# 导出插件,默认包含 config/plugin/<名称>
php webman plugin:export foo/my-admin
# 额外导出 app、config 等目录
php webman plugin:export foo/my-admin --source app --source config
php webman plugin:export --name foo/my-admin -s app -s config说明:
启动 Webman 工作进程,默认 DEBUG 模式(前台运行)。
用法:
php webman start选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --daemon | -d | 以 DAEMON 模式启动(后台运行) |
停止 Webman 工作进程。
用法:
php webman stop选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --graceful | -g | 平滑停止,等待当前请求处理完成后再退出 |
重启 Webman 工作进程。
用法:
php webman restart选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --daemon | -d | 重启后以 DAEMON 模式运行 |
| --graceful | -g | 平滑停止后再重启 |
无停机重载代码,适用于代码更新后热加载。
用法:
php webman reload选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --graceful | -g | 平滑重载,等待当前请求处理完成后再重载 |
查看工作进程运行状态。
用法:
php webman status选项:
| 选项 | 快捷方式 | 描述 |
|---|---|---|
| --live | -d | 显示详情(实时状态) |
获取工作进程连接信息。
用法:
php webman connections| Back | FazBrowse Home | New Git URL |