kzykhys/php-class-generator

从纯文本文档生成符合PSR规范的类

1.0.0 2012-11-20 06:31 UTC

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% 使用 setbind 作为设置器,getis 作为获取器
  • > 表示注释开始至行尾
  • 您可以在字段定义的同一行和下一行放置注释

方法定义(可选)

%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)