octava/code-generator

PHP code generator

dev-master / 1.0.x-dev 2019-11-14 20:09 UTC

This package is auto-updated.

Last update: 2022-05-15 01:37:41 UTC


README

Умный кодогенератор для PHP, написанный на PHP.

SymfonyInsight

Позволяет, на основании шаблонов файлов, генерировать файлы по заданным параметрам. Так же, умеет совмещать код в классах.

Установка

composer require octava/code-generator --dev

Предопределенные переменные шаблонов

_CG_FILE_NAME_ - имя файла (TestController для файла TestController.php)

_CG_FILE_NAME_UCFIRST_ - имя файла с большой буквы (TestController для файла TestController.php)

_CG_FILE_NAME_LCFIRST_ - имя файла с маленькой буквы (testController для файла TestController.php)

_CG_FILE_BASENAME_ => имя файла (TestController для файла TestController.php)

_CG_FILE_DIR_ => директория файла (path/to/file для файла path/to/file/TestController.php),

_CG_FILE_PATH_ => путь к файлу без расширения (path/to/file/TestController для файла path/to/file/TestController.php),

_CG_FILE_EXTENSION_ - расширение файла (php для файла TestController.php)

_CG_FILE_NAMESPACE__ - расширение файла (path\to\file для файла path/to/file/TestController.php)

Примеры использования

<?php
use Octava\CodeGenerator\CodeGenerator;
use Octava\CodeGenerator\Configuration;
use Octava\CodeGenerator\Filesystem;
use Octava\CodeGenerator\Processor\PhpClassProcessor;
use Octava\CodeGenerator\Processor\SimpleProcessor;
use Octava\CodeGenerator\TemplateFactory;
use PhpParser\ParserFactory;
use PhpParser\PrettyPrinter\Standard;

$configuration = new Configuration('base/templates/path', 'base/output/dir');
$configuration
    ->setTemplateVars([])
    ->addProcessor(new SimpleProcessor())
    ->addProcessor(new PhpClassProcessor((new ParserFactory)->create(ParserFactory::PREFER_PHP7), new Standard()))
;
$templateFactory = new TemplateFactory($configuration);
$codeGenerator = new CodeGenerator($this->configuration, new Filesystem());

$codeGenerator
    ->generate(
        $templateFactory->create(
            'src/Application/_CG_MODULE_/_CG_MODULE_Service.php',
            'src/Application/_CG_MODULE_/_CG_MODULE_Service.php',
            ['_CG_MODULE_' => 'MyFavourite']
        )
    );