• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
PHPCR - Standard Content Repository for PHP
 

PHPCR - Standard Content Repository for PHP

on

  • 3,089 views

Content repositories session from the PHP track at FrOSCon 2011.

Content repositories session from the PHP track at FrOSCon 2011.

Statistics

Views

Total Views
3,089
Views on SlideShare
3,060
Embed Views
29

Actions

Likes
1
Downloads
14
Comments
0

2 Embeds 29

https://twitter.com 26
http://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PHPCR - Standard Content Repository for PHP PHPCR - Standard Content Repository for PHP Presentation Transcript

    • PHPCRStandard Interface for Content Repositories
    • http://bergie.iki.fihenri.bergius@iki.fi @bergie
    • github.com/bergie/noflogithub.com/bergie/phpflo
    • Same API, multiple repositories● Jackalope ● Midgard ● Apache Jackrabbit: ● GObject-oriented Java-based repository repository library server, accessible accessible through through WebDAV PHP extension ● Doctrine: pure-PHP ● Python, JavaScript, repository library Java, ...● github.com/jackalope/jackalope ● github.com/bergie/phpcr-midgard2
    • Why use Midgard?
    • Developers write against a single APIImplementations can be chosen based on deployment needs
    • “Products in MySQL, blog entries in CouchDB”
    • Standard: JSR-283Day Management AG, Switzerland 10-August-2009Release noteProduct: Specification for Content Repository for Java(tm) Technology API 2.0Version: 2.0Type: Full Release----------------------------------------------------------------------This package consists of the following components:1) Specification documents: spec/2) Applicable Licenses: license/3) API Source code: src/4) pre-built API .jar-file: lib/5) generated javadoc: docs/For questions or comments feel free to use jsr-283-comments@jcp.orgFurther information about JSR 283 can be found athttp://www.jcp.org/en/jsr/detail?id=283
    • Content Management Interoperability Services● JCR-like API using HTTP and Atom (or SOAP)● Quite complicated, but language-agnostic● OASIS spec since 2010● Good implementations in enterprise document management systems● Proponents include Microsoft, Nuxeo and Alfresco
    • The next version of JCR will also include PHP scripting bindings, i.e. PHPCR
    • PHPCR is a collection of interfaces
    • ...and API testsbergie@AirDrone:~/Projects/phpcr-midgard2/api-test$ phpunitPHPUnit 3.5.5 by Sebastian Bergmann.I.IIISSSSSSSSS..S.............E..ESSSSSSSSSSSSSSSSSSSSSSSSEE 60 / 552.........FFSSSSSSSSSSSSS.....E...........................I.. 120 / 552EEI...EEEE......F..........F..........F..........F.......... 180 / 552F..........F..........F......................F..........F... 240 / 552.......F..........F..........F........ES.............S...... 300 / 552....F.EE..I...E..II......F..............................I... 360 / 552..........E.I..I.........I............................E.E... 420 / 552...EE.............................E......................... 480 / 552........I....................E.EFEF...I.I.IEI..FEE.FF.FFF..F 540 / 552S.....SSSSSSTime: 03:53, Memory: 148.50MbThere were 27 errors:1) PHPCRTestsQueryQueryManagerTest::testGetQueryPHPCRQueryInvalidQueryException: Unsupported xpath language/home/bergie/Projects/phpcr-midgard2/src/Midgard2CR/Query/QueryManager.php:24/home/bergie/Projects/phpcr-midgard2/src/Midgard2CR/Query/QueryManager.php:62/home/bergie/Projects/phpcr-midgard2/api-test/suite/tests/06_Query/QueryManagerTest.php:37...FAILURES!Tests: 536, Assertions: 2331, Failures: 25, Errors: 27, Incomplete: 18, Skipped: 56.
    • Repository capabilities● Tree access ● XML import and● Access by UUID export● Workspaces ● Permissions● Versioning ● Capability discovery● Multi-value properties ● Observation● Queries: SQL2, QOM ● Locking & Transactions
    • “Simple stuff should be easy, but complex stuff  should still be possible”
    • In PHPCR, all content is stored in a tree of nodes Nodes have a name, a type, and a set of properties Nodes can also have child nodes
    • Including PHPCR in your application● PHP 5.3 namespaced code● Use PSR-0 standard autoloader
    • Connecting to a repository: Midgard
    • Connecting to a repository: Jackrabbit● Start Jackrabbit: $ java -jar jackrabbit-standalone-2.2.5.jar● Connect to repository:
    • This is the only repository-specific part
    • Working with the tree
    • About Node types● Node types determine what properties and what kind of child nodes a node can have● Some built-in types: nt:file, nt:folder, nt:resource, nt:unstructured● Node types can be amended with “mixin” types, like mix:lastModified, mix:language● Most repositories allow you to define your own types● Recommendation: Start with nt:unstructured, add more strict definitions when you know your data model
    • Queries: SQL2
    • Queries: Query Object Model
    • Versioning: enable
    • Versioning: commit
    • Versioning: restore
    • Export and import
    • Export and import
    • Some projects looking at PHPCR
    • Some projects looking at PHPCR
    • Questions?henri.bergius@iki.fi @bergie