Skip to content
Newer
Older
100644 99 lines (62 sloc) 3.55 KB
5ee2591 @dbu updated the architecture doc a bit
dbu authored
1 # Architecture
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
2
3 Components
838fd8e @dbu updating architecture doc with links
dbu authored
4
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
5 * PHPCR API Interfaces - defining the API
6 * API Tests - testing conformity of the implementation to the PHPCR API
7 * Jackalope
8 * Storage independent layer
9 * Storage layer
10
11
5ee2591 @dbu updated the architecture doc a bit
dbu authored
12 ## PHPCR API Interfaces
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
13
541b089 @dbu cleanup readme file and architecture doc
dbu authored
14 These interfaces have to be implemented by all projects providing the content
15 repository API in PHP. These interface definitions are adapted from the Java
16 Content Repository JCR standard. The API is implementation-independent and
17 improved in cooperation with all implementors of PHPCR and the JCR community.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
18
5ee2591 @dbu updated the architecture doc a bit
dbu authored
19 PHP code: https://github.com/phpcr/phpcr
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
20
a4484d4 @lsmith77 its phpcr.github.io
lsmith77 authored
21 Documentation: https://phpcr.github.io/
838fd8e @dbu updating architecture doc with links
dbu authored
22
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
23
541b089 @dbu cleanup readme file and architecture doc
dbu authored
24 ## PHPCR utilities
25
26 During development, we found a couple of useful things that can be provided on
27 top of the PHPCR API, regardless of the actual implementation. They are
28 collected in the phpcr-utils suite. Jackalope uses a few of those utils.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
29
541b089 @dbu cleanup readme file and architecture doc
dbu authored
30 PHP code: https://github.com/phpcr/phpcr-utils
31
32
33 ## PHPCR API Tests
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
34
5ee2591 @dbu updated the architecture doc a bit
dbu authored
35 A suite of functional tests for testing if your implementation is correctly
36 following the specification. Have a look at the README in the git repository
541b089 @dbu cleanup readme file and architecture doc
dbu authored
37 to see how to set the tests up for your own implementation.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
38
5ee2591 @dbu updated the architecture doc a bit
dbu authored
39 PHP code: http://github.com/phpcr/phpcr-api-tests
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
40
41
541b089 @dbu cleanup readme file and architecture doc
dbu authored
42 ## Jackalope storage independent layer
5ee2591 @dbu updated the architecture doc a bit
dbu authored
43
44 This layer implements the PHPCR interfaces in pure, framework-agnostic PHP
45 without dependencies on any third-party libraries. It provides all the
541b089 @dbu cleanup readme file and architecture doc
dbu authored
46 necessary code for a PHPCR library except the data storage layer.
5ee2591 @dbu updated the architecture doc a bit
dbu authored
47
48 This mechanism, similar to Jackrabbit's [SPI](http://jackrabbit.apache.org/jackrabbit-spi.html),
49 allows for easy adaptation to different storage backends, handling
50 implementation details such as transport layers not covered by the PHPCR
51 standard.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
52
5ee2591 @dbu updated the architecture doc a bit
dbu authored
53 In the src folder, you find mainly classes with the names as defined by the
541b089 @dbu cleanup readme file and architecture doc
dbu authored
54 PHPCR API. The two important things not defined by the API are the class
55 ``ObjectManager`` and the interfaces in the ``Transport`` namespace.
5ee2591 @dbu updated the architecture doc a bit
dbu authored
56
57 * ObjectManager caches nodes and talks to Transport. For write operations, it
58 acts as "Unit of Work" handler.
59 * Transport is separated from the implementation by Interfaces (see below)
60
521e7b9 @dbu updated architecture doc a bit
dbu authored
61 Please read the phpdoc comments for implementation details. Note that the
541b089 @dbu cleanup readme file and architecture doc
dbu authored
62 methods implementing PHPCR interfaces are documented in the interface php
63 files. Generate the html documentation according to doc/config/README to have
64 a combined doc of the API and implementation details.
521e7b9 @dbu updated architecture doc a bit
dbu authored
65
5ee2591 @dbu updated the architecture doc a bit
dbu authored
66 PHP code: http://github.com/jackalope/jackalope
67
838fd8e @dbu updating architecture doc with links
dbu authored
68 Documentation: https://jackalope.github.com/
69
5ee2591 @dbu updated the architecture doc a bit
dbu authored
70
71 ## Storage layers: The transport interfaces
72
73 The storage layer is separated from the Jackalope application code by
74 interfaces. These interfaces define the basic operations needed to implement
75 the PHPCR operations. Implementing PHPCR support for a new storage engine is
76 easiest done by just implementing a new transport.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
77
5ee2591 @dbu updated the architecture doc a bit
dbu authored
78 ### DoctrineDBAL: All SQL databases supported by doctrine
79
80 The doctrine transport uses the doctrine database abstraction layer to talk to
81 any SQL database supported by doctrine.
82
541b089 @dbu cleanup readme file and architecture doc
dbu authored
83 PHP code: http://github.com/jackalope/jackalope-doctrine-dbal
947c833 @dbu added information from previously separated doctrine files
dbu authored
84
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
85
5ee2591 @dbu updated the architecture doc a bit
dbu authored
86 ### Jackrabbit: WebDAV/davex protocol to talk to Jackrabbit
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
87
5ee2591 @dbu updated the architecture doc a bit
dbu authored
88 The jackrabbit transport stores data into an Apache Jackrabbit server using
89 a pure PHP implementation of the WebDAV/davex remoting protocol.
c1fa719 @dbu adding general documentation (wiki-cleanup)
dbu authored
90
541b089 @dbu cleanup readme file and architecture doc
dbu authored
91 PHP code: http://github.com/jackalope/jackalope-jackrabbit
947c833 @dbu added information from previously separated doctrine files
dbu authored
92
541b089 @dbu cleanup readme file and architecture doc
dbu authored
93 To hack on jackalope-jackrabbit, you might want to read the documentation of
94 the protocol used between Jackalope and the Jackrabbit backend. We have 2 files
95 to download:
947c833 @dbu added information from previously separated doctrine files
dbu authored
96
de9eaa5 @lsmith77 fixed urls to the webdav docs
lsmith77 authored
97 * "jcr-webdav.doc":http://jackalope.github.io/doc/jcr-webdav_read.doc
98 * "jcr-webdav-protocol.doc":http://jackalope.github.io/doc/jcr-webdav_protocol.doc
Something went wrong with that request. Please try again.