Download the PHP package drez/hjson-to-propel-xml without Composer
On this page you can find all versions of the php package drez/hjson-to-propel-xml. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Please rate this library. Is it a good library?
Informations about the package hjson-to-propel-xml
A better way to build Propel with HJSON Schema
This is a library to convert HJSON file to Propel XML schema. I always found Propel(http://propelorm.org/) schema tedious to write. This should help make it more approchable.
Install with composer
composer require drez/hjson-to-propel-xml
Live converter
Example
Now you can write that:
will translate to:
<database name="goatcheese" defaultIdMethod="native" namespace="App" >
<behavior name="add_validator" />
<behavior name="table_stamp_behavior" />
<behavior name="GoatCheese" >
<parameter name="set_debug_level" value="3" />
<parameter name="is_builder" value="1" />
<parameter name="add_hooks" value="[]" />
<parameter name="with_api" value="1" />
</behavior>
<table name="authy" description="User" >
<behavior name="GoatCheese" >
<parameter name="set_parent_menu" value="Settings" />
</behavior>
<column name="id_authy" type="INTEGER" size="11" required="true" primaryKey="true" autoIncrement="true" />
<column name="validation_key" type="VARCHAR" size="32" required="false" />
<column name="username" description="Username" type="VARCHAR" size="32" required="false" />
<column name="is_root" description="Root" type="ENUM" valueSet="Yes, No" required="false" defaultValue="No" />
<column name="id_authy_group" type="INTEGER" size="11" required="true" />
<foreign-key foreignTable="authy_group" onDelete="restrict" onUpdate="restrict" >
<reference local="id_authy_group" foreign="id_authy_group" />
</foreign-key>
<column name="expire" description="Expiration" type="DATE" required="false" />
<unique >
<unique-column name="username" />
</unique>
</table>
<table name="authy_group_x" isCrossRef="true" >
<column name="id_authy" type="INTEGER" size="11" required="true" primaryKey="true" />
<foreign-key foreignTable="authy" onDelete="cascade" onUpdate="restrict" >
<reference local="id_authy" foreign="id_authy" />
</foreign-key>
<column name="id_authy_group" type="INTEGER" size="11" required="true" primaryKey="true" />
<foreign-key foreignTable="authy_group" onDelete="restrict" onUpdate="restrict" >
<reference local="id_authy_group" foreign="id_authy_group" />
</foreign-key>
</table>
</database>
USE
$text = file_get_contents($this->rootDir . DIRECTORY_SEPARATOR . $hjson_file);
// make sure we have unix style text regardless of the input
$std = mb_ereg_replace('/\r/', "", $text);
$hjson = $cr ? mb_ereg_replace("\n", "\r\n", $std) : $std;
// use of laktak/hjson(https://github.com/hjson/hjson-php) to convert the HJSON to array
$parser = new \HJSON\HJSONParser();
$obj = $parser->parse($hjson, ['assoc' => true]);
// convert Hjson to Propel schema
$HjsonToXml = new \HjsonToPropelXml\HjsonToPropelXml();
$HjsonToXml->convert($obj);
Schema
- You can use all Propel column type
- You can specify any Propel column attributes as attribut:value
- You are encouraged to add your own shortcuts for the most used type!
TODO
- Make more keyword shortcut (String(32)), and find the best defaults!
- Propel validations
- Add table validations, warn on potential problems
- Add custom behavior validations
- Tests
License
MIT
All versions of hjson-to-propel-xml with dependencies
PHP Build Version
Package Version
The package drez/hjson-to-propel-xml contains the following files
Loading the files please wait ....