PingPHP

Build Status

A PHP code generator which use Python Like grammar

Introduction

Installation

To install PingPHP, simply:

$ sudo pip install pingphp

or from source:

$ sudo python setup.py install

Getting Started

Generate PingPHP.conf.json file.

$ pinginit

Then edit the config file with Wildcard.

{
    "ignoreFiles": [
        "test1/*"
    ], 
    "transFiles": [
        "test/**/*.ping"
    ], 
    "destDir": "dest"
}

Generate files:

$ pingrun

Generate files and observe their changes:

$ pingsee

CodeSample

Input file: part of typeHinting.ping

''''''
#如下面的类
class MyClass:

    '''
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
    '''
    public test(otherclass:OtherClass):
        echo otherclass.var



    '''
     * 另一个测试函数
     * 第一个参数必须为数组 
    ''' 
    public test_array(input_array:array):
        print_r(input_array)



    '''
     * 第一个参数必须为递归类型
    '''
    public test_interface(iterator:Traversable):
        echo get_class(iterator)


    '''
     * 第一个参数必须为回调类型
    '''
    public test_callable(callback:callable, data):
        call_user_func(callback, data)

myclass = new MyClass()

Output file: part of typeHinting.php

<?php
/****/
//如下面的类
class MyClass { 

    /**
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
    **/
    public function test(OtherClass $otherclass) { 
        echo $otherclass->var; 
    }



    /**
     * 另一个测试函数
     * 第一个参数必须为数组 
    **/
    public function test_array(array $input_array) { 
        print_r($input_array); 
    }



    /**
     * 第一个参数必须为递归类型
    **/
    public function test_interface(Traversable $iterator) { 
        echo get_class($iterator); 
    }


    /**
     * 第一个参数必须为回调类型
    **/
    public function test_callable(callable $callback, $data) { 
        call_user_func($callback, $data); 
    }
}

$myclass = new MyClass(); 

Grammar

Related

Author

License (MIT)

Copyright (c) 2015 zxylvlp

MIT