roolith/generator
Composer 安装命令:
composer require roolith/generator
包简介
Generate php file using php
README 文档
README
Generate php file using php
install
composer require roolith/generator
usage
After install generator via composer, create a file index.php and add following code -
<?php use Roolith\Generator\GeneratorFactory; require_once __DIR__ . '/PATH_TO_YOUR_VENDOR/vendor/autoload.php'; $generator = GeneratorFactory::getInstance(); $generator ->setTemplateDirectory(__DIR__.'/template') // this is your template directory ->setProjectBaseDirectory(__DIR__) // this is project base directory ->watch($argv); // this $argv to get console arguments
Now create a folder on project root called template and inside template folder create a file called controller.txt and add following code -
# outputBaseDir: Controllers
<?php
namespace Something;
class {{name}} extends Controller
{
public function index()
{
}
public function create()
{
}
}
outputBaseDir means - in which folder file will be generated.
{{name}} means command name argument.
Now run following command
php index.php generate controller DemoController
It should create a DemoController.php inside Controllers folder. If you want to add another template then add test.txt and add your template code and run following command -
php index.php generate test something
add custom command
php index.php test
To make this work, create a TestCommand.php class and it should look like following -
<?php use Roolith\Generator\Command; use Roolith\Generator\Console; use Roolith\Generator\FileGenerator; use Roolith\Generator\FileParser; use Roolith\Generator\Interfaces\CommandInterface; class TestCommand implements CommandInterface { public function register() { return [ 'name' => 'test', 'alias' => [], 'typeAlias' => [], ]; } public function handle(Command $command, Console $console, FileParser $fileParser, FileGenerator $fileGenerator) { $console->output('Test command registered!'); } }
Then register your command with generator class -
$generator ->setTemplateDirectory(__DIR__.'/template') ->setProjectBaseDirectory(__DIR__) ->registerCommandClass([ TestCommand::class ]) ->watch($argv);
There is a demo folder added for more details.
test cases
$ ./vendor/bin/phpunit --testdox tests PHPUnit 9.2.6 by Sebastian Bergmann and contributors. Command ✔ Should get argument name ✔ Should get argument type ✔ Should get argument value ✔ Should get argument type with alias ✔ Should get registered command by name Console ✔ Should set arguments ✔ Should remove first item from argument ✔ Should return bool for has arguments File Generator ✔ Should set file extension ✔ Should set project directory ✔ Should save file File Parser ✔ Should add default instructions ✔ Should set file extension ✔ Should set directory ✔ Should check whether template exists or not ✔ Should parse template Generate Factory ✔ Should have get instance method Generator ✔ Should create instance ✔ Should set template directory ✔ Should set project base directory ✔ Should have watch method ✔ Should register custom command Time: 00:00.012, Memory: 6.00 MB OK (22 tests, 28 assertions)
roolith/generator 适用场景与选型建议
roolith/generator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 82 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 07 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 roolith/generator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 roolith/generator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 82
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 10
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-07-30