Generate php file using php
composer require roolith/generatorCreate index.php:
<?php
use Roolith\Generator\GeneratorFactory;
require_once __DIR__ . '/vendor/autoload.php';
$generator = GeneratorFactory::getInstance();
$generator
->setTemplateDirectory(__DIR__.'/template')
->setProjectBaseDirectory(__DIR__)
->watch($argv);Create template/controller.txt:
# outputBaseDir: Controllers
<?php
namespace Something;
class {{name}} extends Controller
{
}
- First line sets output folder.
{{name}}is replaced with name in title case,{name}keeps raw value.
Generate:
php index.php generate controller DemoController
php index.php g c DemoControllerThis creates Controllers/DemoController.php. To add another type, just add another template file. Example template/model.txt:
# outputBaseDir: Models
<?php
namespace Something;
class {{name}} extends Model
{
protected $table = '';
}
Then run:
php index.php generate model UserThis creates Models/User.php.
Shortcuts: generate = g, controller = c, command = cmd.
Run with php index.php test. Create TestCommand.php:
<?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!');
}
}Register it:
$generator
->setTemplateDirectory(__DIR__.'/template')
->setProjectBaseDirectory(__DIR__)
->registerCommandClass([TestCommand::class])
->watch($argv);See demo folder for full example.
./vendor/bin/phpunit --testdox tests