octava/code-generator

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

This package is auto-updated.

Last update: 2024-09-15 06:20:23 UTC


README

基于PHP编写的智能PHP代码生成器。

SymfonyInsight

允许根据文件模板生成文件,并根据参数进行设置。此外,它还能合并类中的代码。

安装

composer require octava/code-generator --dev

预定义的模板变量

_CG_FILE_NAME_ - 文件名(例如,对于文件 TestController.php,为 TestController

_CG_FILE_NAME_UCFIRST_ - 大写文件名(例如,对于文件 TestController.php,为 TestController

_CG_FILE_NAME_LCFIRST_ - 小写文件名(例如,对于文件 TestController.php,为 testController

_CG_FILE_BASENAME_ -> 文件名(例如,对于文件 TestController.php,为 TestController

_CG_FILE_DIR_ -> 文件目录(例如,对于文件 path/to/file/TestController.php,为 path/to/file

_CG_FILE_PATH_ -> 文件路径(例如,对于文件 path/to/file/TestController.php,为 path/to/file/TestController

_CG_FILE_EXTENSION_ - 文件扩展名(例如,对于文件 TestController.php,为 php

_CG_FILE_NAMESPACE__ - 文件命名空间(例如,对于文件 path/to/file/TestController.php,为 path\to\file

使用示例

<?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']
        )
    );