ride / lib-generator
Ride 框架的代码生成库
1.1.2
2020-11-09 13: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