https://github.com/dantleech/jackalope2
Modular PHPCR Implementation
https://github.com/dantleech/jackalope2
Last synced: over 1 year ago
JSON representation
Modular PHPCR Implementation
- Host: GitHub
- URL: https://github.com/dantleech/jackalope2
- Owner: dantleech
- License: mit
- Created: 2016-04-01T16:20:19.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-04-13T08:21:24.000Z (about 10 years ago)
- Last Synced: 2025-01-30T15:44:24.554Z (over 1 year ago)
- Language: PHP
- Size: 34.2 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Jackalope 2
===========
[](https://travis-ci.org/jackalope2/jackalope2)
[](https://styleci.io/repos/)
A POC/WIP for Jackalope 2
General concepts:
- Modular: Storage, Search, Versioning, etc all idependent and combinable.
- PHPCR layer built upon decoupled components.
- Lazy loading of properties (depending on storage).
- Mandatory UUIDs.
- PHP 7 only.
- Clean.
## Modular
The current Jackalope implies to the implemention (Doctrine DBAL, Jackrabbit)
that it must handle everything - not only storage, but also versioning and
search. This is mitigated to some extent by providing helper functions in the
main library, however it is ultimately the implementations responsibility.
It is also very hard work to create new implementations due to the organically
evolved API which grew out of a PHPCR Jackrabbit client.
This second iteration will fully decouple storage, versioning, search (and
whatever else). This will mean creating, for example, a file system backend
will be realtively simple, and it can then be combined with, for example, an
Zend Search module and a DBAL versioning module.
## Storage
The Storage component handles storing and retrieving data from any number of
backends (e.g. MongoDB, PHP array, Elastic Search).
It data is persisted and retrieved with ``Node`` objects (so named beacuse
they translate to ``Node`` instances at the PHPCR level but are essentially
DTOs).
The ``NodeManager`` handles tracking of the ``Nodes`` and transactions, it
is both a unit-of-work and an API, however key responsibilities, such as
tracking nodes and paths, are delegated and the class remains
algorithmically simple.