koeshiro/code-generator-php

PHP 对象风格代码生成器的包。

1.0.4 2023-03-19 21:31 UTC

This package is auto-updated.

Last update: 2024-09-20 00:52:08 UTC


README

PHP 对象风格代码生成器的包。

示例

创建类

(new ClassTemplate())
    ->setName('Test')
    ->addProperty(
        (new PropertyTemplate())
            ->setName('testProp')
            ->setScope('protected')
            ->setType('?string')
    )->addMethod(
        (new MethodTemplate())
            ->setScope('public')
            ->addArgument(
                (new ArgumentTemplate())
                    ->setName('data')
                    ->setType('string')
            )->setName(
                'setTestProp'
            )->setReturnType(
                'void'
            )->setBlock(
                (new BlockTemplate())
                    ->addLine('$this->testProp = $data')
            )
    )->addMethod(
        (new MethodTemplate())
            ->setScope('public')
            ->addArgument(
                (new ArgumentTemplate())
                    ->setName('test')
                    ->setType('string')
            )->setName(
                'testFun'
            )->setReturnType(
                'string'
            )->setBlock(
                (new BlockTemplate())
                    ->addLine('return \'test\'.$test;')
            )
    )

如果块

$aVariable = (new GetTemplate())->setVariable((new VariableTemplate())->setName('a'));
$bVariable = (new GetTemplate())->setVariable((new VariableTemplate())->setName('b'));
$logicBlock = (new LogicBlockTemplate())->logic(
    (new LogicTemplate())->setLogic(
        "<",
        $aVariable,
        $bVariable
    )
)->and()->logic(
    (new LogicTemplate())->setLogic(
        ">",
        $aVariable,
        $bVariable
    )
)->or()->logic(
    (new LogicTemplate())->setLogic(
        "===",
        $aVariable,
        $bVariable
    )
);

当块

$iVariable = (new GetTemplate())->setVariable((new VariableTemplate())->setName('i'));
$countVariable = (new GetTemplate())->setVariable((new VariableTemplate())->setName('count'));
$whileTemplate = (new WhileTemplate())
    ->setLogic(
        (new LogicBlockTemplate())
            ->logic(
                (new LogicTemplate())
                    ->setLogic(
                        '<',
                        $iVariable,
                        $countVariable
                    )
            )
    )
    ->setBlock(
        (new BlockTemplate())->addLine('$i++;')
    );

Fabric

使用 Fabrics 来简化与所有生成对象的工作,提高效率。

(new Fabric());
(new LogicFabric());