Your SlideShare is downloading. ×
PHPCR - Standard Content Repository for PHP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

PHPCR - Standard Content Repository for PHP

2,908
views

Published on

Content repositories session from the PHP track at FrOSCon 2011.

Content repositories session from the PHP track at FrOSCon 2011.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,908
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PHPCRStandard Interface for Content Repositories
  • 2. http://bergie.iki.fihenri.bergius@iki.fi @bergie
  • 3. github.com/bergie/noflogithub.com/bergie/phpflo
  • 4. 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
  • 5. Why use Midgard?
  • 6. Developers write against a single APIImplementations can be chosen based on deployment needs
  • 7. “Products in MySQL, blog entries in CouchDB”
  • 8. 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
  • 9. 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
  • 10. The next version of JCR will also include PHP scripting bindings, i.e. PHPCR
  • 11. PHPCR is a collection of interfaces
  • 12. ...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.
  • 13. 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
  • 14. “Simple stuff should be easy, but complex stuff  should still be possible”
  • 15. 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
  • 16. Including PHPCR in your application● PHP 5.3 namespaced code● Use PSR-0 standard autoloader
  • 17. Connecting to a repository: Midgard
  • 18. Connecting to a repository: Jackrabbit● Start Jackrabbit: $ java -jar jackrabbit-standalone-2.2.5.jar● Connect to repository:
  • 19. This is the only repository-specific part
  • 20. Working with the tree
  • 21. 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
  • 22. Queries: SQL2
  • 23. Queries: Query Object Model
  • 24. Versioning: enable
  • 25. Versioning: commit
  • 26. Versioning: restore
  • 27. Export and import
  • 28. Export and import
  • 29. Some projects looking at PHPCR
  • 30. Some projects looking at PHPCR
  • 31. Questions?henri.bergius@iki.fi @bergie

×