wegar / basic
Webman plugin wegar/basic
Requires
- php: >=8.3
- monolog/monolog: ^2.10 || ^3.0
- php-parallel-lint/php-console-color: ^1.0
- robmorgan/phinx: ^0.16
- sebastian/diff: ^6.0 || ^7.0 || ^8.0 || ^9.0
- symfony/console: ^6.4 || ^7.0 || ^8.0
- vlucas/phpdotenv: ^4.0 || ^5.0
- webman/console: ^2.0
- webman/database: ^2.0
- workerman/webman-framework: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- infection/infection: ^0.35
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.1 || ^13.0
- webman/redis-queue: ^2.1
- workerman/crontab: ^1.0
Suggests
- webman/redis-queue: 启用 redis-queue 消费进程目录的预创建(CheckFilesDirectories)
- workerman/crontab: 启用 app/cron 下带 #[CronRule] 的定时任务(CronHelper)
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.x-dev
- v1.0.53
- v1.0.52
- v1.0.51
- v1.0.50
- v1.0.49
- v1.0.48
- v1.0.47
- v1.0.46
- v1.0.45
- v1.0.44
- v1.0.43
- v1.0.42
- v1.0.41
- v1.0.40
- v1.0.39
- v1.0.38
- v1.0.37
- v1.0.36
- v1.0.35
- v1.0.34
- v1.0.33
- v1.0.31
- v1.0.30
- v1.0.29
- v1.0.28
- v1.0.27
- v1.0.26
- v1.0.25
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-10-03 08:04:33 UTC
README
初始化任务自动加载
在app/init文件夹下以类名.php形式创建初始化任务类,并实现run()方法,该方法会在系统启动时自动执行。
Init示例
<?php # app/init/Foo.php namespace app\init; use Wegar\Basic\Abstract\InitAbstract; class Foo extends InitAbstract { public int $weight = 10; // 默认为10,越小越先执行 function run(){ // do something } }
数据库迁移自动加载
在项目根目录创建phinx.php文件,使用命令 phinx create 或者 webman phinx create 创建迁移文件。当启动时,会自动执行迁移文件。
如果使用 bin 或者 phar 打包时需要设置自动释放配置。
phinx.php文件内容
<?php use Dotenv\Dotenv; if (class_exists('Dotenv\Dotenv') && file_exists(base_path(false) . '/.env')) { if (method_exists('Dotenv\Dotenv', 'createUnsafeMutable')) { Dotenv::createUnsafeMutable(base_path(false))->load(); } else { Dotenv::createMutable(base_path(false))->load(); } } return [ "paths" => [ "migrations" => is_phar() ? runtime_path('phinx/database/migrations') : base_path("database/migrations"), "seeds" => is_phar() ? runtime_path('phinx/database/seeds') : base_path("database/seeds") ], "environments" => [ "default_migration_table" => "phinxlog", "default_environment" => "default", "default" => [ "adapter" => "mysql", "host" => env("MYSQL_HOST"), "name" => env("MYSQL_DBNAME"), "user" => env("MYSQL_USER"), "pass" => env("MYSQL_PASSWORD"), "port" => env("MYSQL_PORT", "3306"), "charset" => "utf8mb4", 'collation' => 'utf8mb4_general_ci', ], ] ];
Cron任务自动加载
需要预先安装:Crontab定时任务组件 -> composer require workerman/crontab
在app/cron文件夹下以类名.php形式创建Cron任务类,并实现run()方法,该方法会在系统启动时自动执行。
使用Wegar\Basic\Attribute\CronRule对run()方法进行注解,以定义Cron规则。
Cron示例
<?php # app/cron/Foo.php namespace app\cron; use Wegar\Basic\Attribute\CronRule; class Foo { #[CronRule('*/5 * * * * *')] // 每5秒执行一次 function run(){ // do something } }
打包文件自动释放文件
在 config/app.php 中设置 build_release 即可自动释放打包文件。
config/app.php示例
# config/app.php ... 'build_release' => [ '.env.example' => run_path(), # 将 .env.example 文件释放到运行目录下(默认覆盖) 'public/' => run_path(), 'plugin/admin/public/' => run_path(), 'database/' => runtime_path('phinx'), # 将 database 目录释放到 phinx 运行目录下 # 需要保留宿主已有文件的路径,用数组形式声明不覆盖(只补缺失) 'plugin/foo/config.php' => ['to' => run_path('config'), 'overwrite' => false], ], ...
条目为
from => to字符串时默认覆盖(打包产物是唯一真相源);写成from => ['to' => to, 'overwrite' => false]则不覆盖宿主已有文件。同from以宿主配置为准。
发布模型:打包即冻结,运行时只认 .env
- 开发期:在项目仓库里编辑代码与配置(含
config/plugin/wegar/basic/*)。重新composer update触发重装时只补缺失文件、不覆盖你的改动(copy_dir(overwrite=false));插件升级的 config 变更由php webman wegar:basic:update交互合并。 - 打包期:进 phar 的一切即为冻结快照,是唯一真相源。
- 运行期:从 phar 释放出来的文件都是派生副本,一律覆盖(改它们无意义,下次部署即被覆盖);
唯一的环境差异来源是
.env。因此环境相关配置应 env 化:- 宿主
config/*.php用php webman wegar:basic:env把连接/凭据字面量迁移到.env; - 插件自带 config 的可变量以
env('KEY', 默认)书写(如app.php的WEGAR_BASIC_ENABLE)。
- 宿主
.env 优化命令
php webman wegar:basic:env 扫描 config/(默认跳过 config/plugin),挑出连接/凭据类字面量
(host/port/database/username/password 等),生成或更新 .env.example。默认只预演,
不改动配置;加 --write 才会把 config 里的字面量改写为 env('KEY', 原值),改写前原文件备份为 *.bak。
php webman wegar:basic:env # 预演:只更新 .env.example php webman wegar:basic:env --write # 落盘:改写 config(原文件备份为 *.bak) php webman wegar:basic:env --path=config --env-file=.env.example --exclude=plugin
配置项
app.error_with_status: 错误响应是否影响HTTP状态码(默认为 false )
注意
- 将会需要并申明以下函数
json_successjson success 响应json_errorjson err 响应ss用于 session 快捷管理,通过修改config/plugin/wegar/basic/helper/SessionHelper.php增加自定义 session