kzykhys / php-class-generator
从纯文本文档生成符合PSR规范的类
1.0.0
2012-11-20 06:31 UTC
Requires
- php: >=5.3.3
- symfony/console: 2.1.*
- symfony/filesystem: 2.1.*
- symfony/finder: 2.1.*
This package is not auto-updated.
Last update: 2024-09-14 13:20:27 UTC
README
从纯文本文档生成符合PSR规范的类
要求
- PHP 5.3.3 +
安装
下载phar
下载 php-cg.phar 并存储在任何位置。
通过Composer
{
"require": {
"kzykhys/php-class-generator": "dev-master"
}
}
用法
编写您的类并将文本文件保存为 *.pcg(语法描述如下),例如 ./doc/myclass.pcg
KzykHys\ClassGenerator\Sample < KzykHys\ClassGenerator\Container << \IteratorAggrigate \Countable
> The sample of PHP Class Generator
> Generates PHP classes from plain text document (*.pcg)
+ iterator:\ArrayIterator
# container:array
# length:integer[get set] > The length of code
# compiled:boolean[is set] > Whether this class is compiled or not
- options:array
- generator:Generator[get set]
+ __construct(options:array)
+ generate(document:string version:string):\KzykHys\ClassGenerator\Compiler\StreamWriter
+ getString():string > Returns the code as a string
+ write(filename:string) > Write the code to file
+ count():integer
# traverseContainer():Container
运行命令
$ php php-pcg.phar --from ./doc --to ./src
PHP文件将生成到 ./src/Full/Qualified/ClassName.php
<?php namespace KzykHys\ClassGenerator; /** * The sample of PHP Class Generator * Generates PHP classes from plain text document (*.pcg) */ class Sample extends Container implements \IteratorAggrigate, \Countable { /** * @var \ArrayIterator $iterator */ public $iterator; /** * @var array $container */ protected $container; /** * The length of code * * @var integer $length */ protected $length; /** * Whether this class is compiled or not * * @var boolean $compiled */ protected $compiled; /** * @var array $options */ private $options; /** * @var Generator $generator */ private $generator; /** * @param array $options */ public function __construct(array $options) { } /** * @param string $document * @param string $version * * @return \KzykHys\ClassGenerator\Compiler\StreamWriter */ public function generate($document, $version) { } /** * Returns the code as a string * * * @return string */ public function getString() { } /** * Write the code to file * * @param string $filename */ public function write($filename) { } /** * * @return integer */ public function count() { } /** * * @return Container */ protected function traverseContainer() { } }
语法
概述
- 类定义(必需)
- 字段定义(可选)
- 方法定义(可选)
类定义(必需)
%ClassName% < %BaseClassName% << %InterfaceName% %InterfaceName% > %Comment%
> %Comment%
%ClassName%
是必需的 ** 如果您的类位于命名空间中,%ClassName%
将类似于\\Namespace\\Package\\ClassName
<
代表extends
%BaseClassName%
是可选的<<
代表implements
%InterfaceName%
是可选的>
表示注释开始至行尾- 您可以在类定义的同一行和下一行放置注释
字段定义(可选)
%FieldVisibility% %FieldName% : %FieldType% \[%FieldAccessor%\] > %Comment%
> %Comment%
%FieldVisibility%
是必需的%FieldVisibility%
使用+
表示公开#
表示受保护-
表示私有%FieldName%
是必需的%FieldType%
是可选的%FieldAccessor%
使用set
,bind
作为设置器,get
,is
作为获取器>
表示注释开始至行尾- 您可以在字段定义的同一行和下一行放置注释
方法定义(可选)
%MethodVisibility% %MethodName% (%Argument% : %ArgumentType%) : %ReturnType%
%MethodVisibility%
是必需的%MethodVisibility%
使用+
表示公开#
表示受保护-
表示私有%MethodName%
是必需的- 括号
()
是必需的(即使没有参数) %Argument%
和%ArgumentType%
是可选的%ReturnType%
是可选的
编写可读文档
您可以使用任何空白来编写可读的文档
以下代码与用法中使用的代码相同
KzykHys\ClassGenerator\Sample < KzykHys\ClassGenerator\Container << \IteratorAggrigate \Countable
> The sample of PHP Class Generator
> Generates PHP classes from plain text document (*.pcg)
+ iterator : \ArrayIterator
# container : array
# length : integer[get set]
> The length of code
# compiled : boolean[is set]
> Whether this class is compiled or not
- options : array
- generator : Generator[get set]
+ __construct(options:array)
+ generate(document:string
version:string) : \KzykHys\ClassGenerator\Compiler\StreamWriter
+ getString() : string
> Returns the code as a string
+ write(filename:string)
> Write the code to file
+ count() : integer
# traverseContainer() : Container
构建Phar存档
您可以通过以下命令从源代码构建Phar存档
php-cg build
如果失败如下
[UnexpectedValueException]
creating archive "php-cg.phar" disabled by the php.ini setting phar.readonly
运行以下命令
php -d phar.readonly=0 php-cg build
注意
- 尚不支持类常量。
- 接口的实现不会自动生成。
作者
Kazuyuki Hayashi (@kzykhys)