roolith/generator
最新稳定版本:1.0.3
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)
统计信息
- 总下载量: 82
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-07-30