This is a meta issue for completing and improving the entity API for Drupal 8.
- Complete the API (i.e. implement full CRUD)
- Improve DX (classed objects, ..)
- Full support for diverse storage engines, remote storage per entity-type.
Step 1: The base: CRUD, classed objects based upon a defined interface
- #1184944: Make entities classed objects, introduce CRUD support
- #1277776: Add generic field/property getters/setters (with optional language support) for entities
- #1233394: Agree on a property naming pattern
- #1346032: Ordering of hook_entity_delete() is inconsistent
- #1301106: Rely on methods to access entity properties [policy, no patch]
Step 2: Convert all entity types to classed objects:
- #1361226: Make the file entity a classed object
- #1361234: Make the node entity a classed object
- #1361232: Make the taxonomy entities classed objects
- #1361228: Make the user entity a classed object
- #1615236: Merge entity controller interfaces, document and add default entity class definition
Once the above issues are complete:
- #1618172: Remove entity_uri() in favor of EntityInterface::uri()
- #1615240: Remove entity_label() in favor of EntityInterface::label()
Rely on. Not possible, see [#1551140].
Step 3: Multiple controllers/decoupling: Lay the foundation for adding more entity-based functionality.
- #1302378: Use multiple specialized entity controllers
- #1596472: Replace hard coded static cache of entities with cache backends
- #1612014: Create an interface for revisionable entities
Step 4: Add further APIs around entities
- #1346214: [meta] Unified Entity Field API
- Entity Validation (based upon property level validation API)
- Entity Access API (+ property level access). #777578: Expand the node access API to a general entity access API to improve security
- Entity Form system. #1499596: Introduce a basic entity form controller
- #1026616: Implement an entity render controller
Misc, but major issues without any particular order:
- Implement full revision support in the database storage controller
- #1374116: Move bundle CRUD API out of Field API
- #1391694: Use type-hinting for entity-parameters
- When revisions are done ==> #1374030: Remove entity_extract_ids() now that we have proper classed entity objects
- Refactor EFQ to build upon the storage controller
- Unify the storage system (Field storage + entity storage):
- Discussion: #1497374: Switch from Field-based storage to Entity-based storage
- Related sandbox: http://drupal.org/sandbox/damz/1496468
- #1810370: Entity Translation API improvements
Let’s use this issue for high-level architecture discussion and update the roadmap accordingly.