ride/lib-generator

Ride 框架的代码生成库

1.1.2 2020-11-09 13:21 UTC

This package is auto-updated.

Last update: 2024-09-09 21:41:21 UTC


README

PHP Ride 框架的代码生成库。

本库包含的内容

CodeGenerator

CodeGenerator 接口是本库的主要接口。您可以使用它来创建类、方法、属性和变量。设置好您的类后,您可以将其传递给 generateClass 方法以获取 PHP 代码。

CodeClass

CodeClass 接口是类或接口的表示。您可以向其中添加常量、属性和方法。完成后,您可以将其传递给 CodeGenerator 的 generateClass 方法以获取 PHP 代码。

CodeMethod

CodeMethod 接口是类方法的表示。您可以向其中添加参数,设置是否为抽象或静态,设置源代码等。当方法定义完成后,您可以将其添加到一个 CodeClass 实例中。

CodeProperty

CodeProperty 接口是类属性的表示。它继承自 CodeVariable 接口,因此也可以用作变量。两者的区别在于属性有作用域。

CodeVariable

CodeVariable 接口是变量的表示。它可以用于类常量、方法参数或返回值。

代码示例

查看此代码示例以了解本库的一些可能性

<?php

use ride\library\generator\CodeGenerator;

function generateCode(CodeGenerator $generator) {
    // create a constant
    $constant = $generator->createVariable('MY_CONSTANT', 'string');
    $constant->setDefaultValue('constant');
    $constant->setDescription('Dummy constant');

    // create a property
    $isActiveProperty = $generator->createProperty('isActive', 'boolean', 'private');
    $isActiveProperty->setDefaultValue(false);
    $isActiveProperty->setDescription('Flag to see if this instance is active');

    // create needed variables
    $dataVariable = $generator->createVariable('data', 'vendor\\library\\data\\DataContainer');
    $dataVariable->setDescription('Data container to check');

    $isValidVariable = $generator->createVariable('isValid', 'boolean');
    $isValidVariable->setDescription('Flag to see if the provided data is valid');

    // create methods
    $isActiveMethod = $generator->createMethod('isActive');
    $isActiveMethod->setDescription('Checks if this instance is active');
    $isActiveMethod->setSource('return $this->isActive;');
    $isActiveMethod->setReturnValue($isActiveProperty);

    $setIsActiveMethod = $generator->createMethod('setIsActive', array($isActiveProperty));
    $setIsActiveMethod->setDescription('Sets the active state of this instance');
    $setIsActiveMethod->setSource('$this->isActive = $isActive;');

    $checkDataMethod = $generator->createMethod('checkData', array($dataVariable));
    $checkDataMethod->setDescription('Checks the provided data');
    $checkDataMethod->setSource('return $data->isValid();');
    $checkDataMethod->setReturnValue($isValidVariable);

    // join it all together in a class
    $class = $generator->createClass('vendor\\library\\MyClass', null, array('vendor\\library\\MyInterface'));
    $class->addConstant($constant);
    $class->addProperty($isActiveProperty);
    $class->addMethod($isActiveMethod);
    $class->addMethod($setIsActiveMethod);
    $class->addMethod($checkDataMethod);

    // generate the PHP code
    return $this->generator->generateClass($class);
}

此函数将生成以下 PHP 代码

<?php

namespace vendor\library;

use vendor\library\data\DataContainer;

class MyClass implements MyInterface {

    /**
     * Dummy constant
     * @var string
     */
    const MY_CONSTANT = 'constant';

    /**
     * Flag to see if this instance is active
     * @var boolean
     */
    private $isActive = false;

    /**
     * Checks if this instance is active
     * @return boolean Flag to see if this instance is active
     */
    public function isActive() {
        return $this->isActive;
    }

    /**
     * Sets the active state of this instance
     * @param boolean $isActive Flag to see if this instance is active
     * @return null
     */
    public function setIsActive($isActive = false) {
        $this->isActive = $isActive;
    }

    /**
     * Checks the provided data
     * @param \vendor\library\data\DataContainer $data Data container to check
     * @return boolean Flag to see if the provided data is valid
     */
    public function checkData(DataContainer $data) {
        return $data->isValid();
    }

}

安装

您可以使用 Composer 安装此库。

composer require ride/lib-generator