riven / hyperf-generator
Hyperf generator
Installs: 6 420
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=8.2
- ext-swoole: >=4.4
- hyperf/database: ~3.0.0
- hyperf/db-connection: ~3.0.0
- hyperf/di: >=1.1
- hyperf/framework: >=1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- hyperf/devtool: ~3.0.0
- hyperf/watcher: ~3.0.0
- mockery/mockery: ^1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: *
- qiutuleng/hyperf-dump-server: ^2.0
- swoft/swoole-ide-helper: dev-master
- swoole/ide-helper: ^5.0
README
php-amqplib
的 Hyperf 友好型封装,为 Hyperf 生态系统提供代码自动生成支持。
安装
安装此包,请运行以下 Composer 命令:
composer require riven/hyperf-generator
支持的命令
Controller (控制器)
# 生成控制器 php bin/hyperf.php generate --table=order --type=c # 或使用完整名称 php bin/hyperf.php generate --table=order --type=controller
Validate (验证器)
# 生成验证器 php bin/hyperf.php generate --table=order --type=v # 或使用完整名称 php bin/hyperf.php generate --table=order --type=validate
Service (服务)
# 生成服务 php bin/hyperf.php generate --table=order --type=s # 或使用完整名称 php bin/hyperf.php generate --table=order --type=service
Data (数据)
# 生成数据类 php bin/hyperf.php generate --table=order --type=d # 或使用完整名称 php bin/hyperf.php generate --table=order --type=data
Model (模型)
# 生成模型 php bin/hyperf.php generate --table=order --type=m # 或使用完整名称 php bin/hyperf.php generate --table=order --type=model
Struct (结构体)
# 生成结构体 php bin/hyperf.php generate --table=order --type=st # 或使用完整名称 php bin/hyperf.php generate --table=order --type=struct
类型组合使用示例
# 生成控制器和模型 php bin/hyperf.php generate --table=order --type=c,m # 生成服务、验证器和数据类 php bin/hyperf.php generate --table=order --type=s,v,d # 生成所有类型文件 php bin/hyperf.php generate --table=order --type=c,v,s,d,m,st # 指定表并生成特定类型 php bin/hyperf.php generate --table=order --table=users --type=c,v,s # 生成特定类型到指定路径 php bin/hyperf.php generate --table=order --type=m,v --path=Admin # 生成多个表的特定类型 php bin/hyperf.php generate --table=order,users --type=c,m
数据同步
同步操作
使用 setNumber() 方法或通过数组方式 $data['number'] 修改数据时,对象属性和数组键会保持同步。
$data = $request->getStruct(); // 通过方法设置,属性和数组均同步 $data->setNumber(333); dump($data->getAll()); // 'number' => 333 dump($data['number']); // 333 dump($data->getNumber()); // 333 // 通过数组方式设置,属性和数组均同步 $data['number'] = 222; dump($data->getAll()); // 'number' => 222 dump($data['number']); // 222 dump($data->getNumber()); // 222
非同步操作
- 直接通过对象属性方式 $data->number 进行赋值,只会更改对象属性本身,而不会同步更新到内部的数组。
$data = $request->getStruct(); // 直接赋值给对象属性,数组不会同步 $data->number = 444; dump($data->getAll()); // 'number' 仍为 222 dump($data['number']); // 仍为 222 dump($data->getNumber()); // 444 (仅对象属性被改变)
- 二维数组操作不同步,当处理二维数组或嵌套数据结构时,直接操作二维数组不会同步更新到对象属性:
$data = $request->getStruct(); // 假设存在嵌套结构 $data['attach']['name'] = 'John'; // 此时对象属性不会自动更新,需要通过专门的方法或重新设置整个数组 dump($data->getAttach()); // 可能不会反映最新的嵌套更改 // 正确的做法是使用提供的方法或重新设置整个键值 $data->setUser($data['user']); // 或者 $data['user'] = ['name' => 'John']; // 重新设置整个键值