FlexModel
![Build Status][ico-build]
[
][link-coverage]
, (*1)
An ORM agnostic model (object / view / form) configuration library., (*2)
Installation using Composer
Run the following command to add the package to the composer.json of your project:, (*3)
``` bash
$ composer require flexmodel/flexmodel, (*4)
## Usage
Load a FlexModel configuration file:
``` php
load('flexmodel.xml');
$flexModel = new FlexModel();
$flexModel->load($domDocument, 'path/to/cache/directory');
```
## The FlexModel XML format
A minimal FlexModel object definition consists of an object name and model definition with fields:
``` xml
<flexmodel>
<object name='TheNameOfTheObject'>
<fields>
<field name='name_of_the_field' datatype='VARCHAR'/>
</fields>
</object>
</flexmodel>
The object model configuration
The model is defined by one or more field nodes in the fields node of the object, like the example above shows. Each field has a datatype defined and a unique field name., (*5)
Field datatypes
These are the various datatypes that can be defined for a field:
* BOOLEAN
* DATE
* DATEINTERVAL
* DATETIME
* DECIMAL
* FILE
* FLOAT
* HTML
* INTEGER
* JSON
* TEXT
* SET
* VARCHAR, (*6)
Creating references between objects
References between objects are created by adding a field with an 'OBJECT.ObjectName' datatype., (*7)
In the example below you can see an object with the name 'ReferencingObject' with a field refering to an object with the name 'ReferencedObject:
xml
<?xml version='1.0' encoding='UTF-8'?>
<flexmodel>
<object name='ReferencingObject'>
<fields>
<field name='referenced_object' datatype='OBJECT.ReferencedObject'/>
</fields>
</object>
<object name='ReferencedObject'>
<fields>
<field name='some_other_field' datatype='VARCHAR'/>
</fields>
</object>
</flexmodel>, (*8)
Credits and acknowledgements
Also see the list of contributors who participated in this project., (*9)