flexmodel / flexmodel
An XML-based model (object / view / form) configuration library.
Installs: 6 651
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 5
Open Issues: 1
Requires
- php: ^5.4 | ^7.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- satooshi/php-coveralls: ^1.0
README
An ORM agnostic model (object / view / form) configuration library.
Installation using Composer
Run the following command to add the package to the composer.json of your project:
$ composer require flexmodel/flexmodel
Usage
Load a FlexModel configuration file:
<?php use FlexModel\FlexModel; $domDocument = new DOMDocument('1.0', 'UTF-8'); $domDocument->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 version='1.0' encoding='UTF-8'?> <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.
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
Creating references between objects
References between objects are created by adding a field with an 'OBJECT.ObjectName' datatype.
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 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>
Credits and acknowledgements
Also see the list of contributors who participated in this project.