Meta is a DSL that enables to represent, traverse and operate on PHP objects.
- Get a specific object by its ID:
MetaModel integrates with Doctrine, but can be connected to anything.
- Get all objects of a type
- Object graph traversing (get all the articles of a category):
- Call methods:
// Will call generateExtract() on all articles Article(*).generateExtract()
- Field filtering (not implemented yet):
UserGroup[ users.contains(User(1)) ] UserGroup[ users.count() > 0 ]
MetaModel integrates with containers, registries, anything…
MetaModel finds objects in data sources.
You can add any data source by implementing the simple interfaces:
Some libraries are already supported natively:
Doctrine's Entity Manager:
$metaModel = new MetaModel(); $metaModel->addObjectManager(new EntityManagerBridge($entityManager));
$metaModel = new MetaModel(); $metaModel->addContainer(new PHPDIBridge($container));
Add your own by submitting a pull request.
Those are both ideas and work in progress.
- MetaConsole: Simplified Model/DB manipulation from console
Instead of using phpMyAdmin, or building an admin interface, you can manipulate the DB with high level object queries.
Advanced replacement for PropertyAccess, e.g. to build forms, templates (Twig?)
Simplified object queries (from database)
Paths for anything meta on your model: logs, AOP, ACL (e.g. "
Projects using MetaModel: