{"id":13616356,"url":"https://github.com/phpcr/phpcr","last_synced_at":"2025-04-14T00:32:08.941Z","repository":{"id":552206,"uuid":"182652","full_name":"phpcr/phpcr","owner":"phpcr","description":"Port of the Java Content Repository (JCR) to PHP.","archived":false,"fork":false,"pushed_at":"2024-07-03T15:07:44.000Z","size":4510,"stargazers_count":444,"open_issues_count":4,"forks_count":36,"subscribers_count":33,"default_branch":"2.1.x","last_synced_at":"2024-10-30T03:37:10.915Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://phpcr.github.io","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phpcr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2009-04-22T13:09:11.000Z","updated_at":"2024-09-10T20:11:37.000Z","dependencies_parsed_at":"2023-07-06T13:01:50.243Z","dependency_job_id":"b69039c0-df6d-4ed9-9cf4-bc8e2a5d02bc","html_url":"https://github.com/phpcr/phpcr","commit_stats":{"total_commits":443,"total_committers":31,"mean_commits":"14.290322580645162","dds":0.5643340857787811,"last_synced_commit":"3307bbd639408f16fd947fc1be1f9cf3410c52a6"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcr%2Fphpcr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcr%2Fphpcr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcr%2Fphpcr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpcr%2Fphpcr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phpcr","download_url":"https://codeload.github.com/phpcr/phpcr/tar.gz/refs/heads/2.1.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223611939,"owners_count":17173537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T20:01:27.406Z","updated_at":"2024-11-08T00:31:22.514Z","avatar_url":"https://github.com/phpcr.png","language":"PHP","funding_links":[],"categories":["Miscellaneous","PHP","杂项","杂项 Miscellaneous","Configuration"],"sub_categories":["Miscellaneous"],"readme":"# PHP Content Repository PHPCR [![Test application](https://github.com/phpcr/phpcr/actions/workflows/test-application.yaml/badge.svg?branch=2.1.x)](https://github.com/phpcr/phpcr/actions/workflows/test-application.yaml)\n\nThis repository contains interfaces for the PHPCR standard.\n\nThe [JSR-283](http://jcp.org/en/jsr/summary?id=283) specification defines an\nAPI for a Content Repository (CR). The PHP Content Repository Interfaces aims\nto provide that API in PHP. PHPCR is part of JSR-333, the next version of the\nJava Content Repository.\n\nThere is a bunch of information here: http://phpcr.github.io\n\n\n# Documentation\n\n## Introduction\n\nPHP content repository is an API. That is, it defines a standardized way how to\naccess and manipulate content. As with any general API, the main goal is to\n[decouple the backend from the frontend](http://bergie.iki.fi/blog/decoupling_content_management/).\nIf you code against the PHPCR API, your code should run with all PHPCR\nimplementations. David Nuescheler, the lead of JCR, provides the following\n[advantages of using a content repository](http://www.slideshare.net/uncled/introduction-to-jcr).\n\n* Functional Definition of a “Content Repository”\n* Common Vocabulary!\n* No longer learn (dozens of) (ugly) proprietary APIs\n* Write (mostly) portable code, for Document Management, Web Content Management, Source Code Control\n* Compare Repository Functionality\n* No more information silos and vendor Lock-in Content-Centric Infrastructure\n\nPHPCR is adapted from the Java Content Repository (JCR) standard because that\nis a widely used and well thought through standard. There exist a couple of\nimplementations for PHPCR that you can use. See below for a list of known\nimplementations.\n\n## Further reading\n\n* [The PHPCR Book](http://phpcr.readthedocs.org/en/latest/book/index.html)\n* [API Reference](http://phpcr.github.io/doc/html/index.html)\n\n\n# Port Status\n\nThe PHPCR is following the Java Content Repository JCR API closely where\nappropriate. In the points where Java and PHP differ, we tried to follow the\nlogic of PHP while keeping the spirit of the original API. The API has the same\nexpressiveness as the Java API.\nMost of the JSR-283/JSR-333 documentation and code examples should be usable as-is.\n\nMain differences between PHPCR and JCR are\n\n* PHP has no method overloading. Same-name methods that differ only by\n  parameter number and/or type have been merged into one method.\n* PHP is weak typed, which makes the Value interface and the large number of\n  almost-identical iterators obsolete.\n\nAn exhaustive list of the differences between PHPCR and JCR is in the file\ndoc/JCR_TO_PHPCR.txt\n\n\n# Tests\n\n## Unit tests\n\nAs PHPCR is an API definition, there is not much to test on it without an\nimplementation. Nonetheless, there are a few concrete classes that do have\nunit tests. Simply run them with phpunit -c tests/\n\n## API Tests\n\nAn API test suite for the functionality of PHPCR is available at\nhttps://github.com/phpcr/phpcr-api-tests/\nAll implementations have to test against this test suite to make sure they\nare interchangeable with each other.\n\n\n# Implementations\n\n*Jackalope separates the content repository logic from the storage backend. Several backend drivers are currently being developed.*\n\n* [Jackalope-Jackrabbit](https://jackalope.github.io/): Mapping requests to a java Jackrabbit instance. To day the most feature complete implementation.\n* [Jackalope-DoctrineDBAL](https://jackalope.github.io/): Storing data in a relational database using the Doctrine Database Abstraction Layer.\n\nThe following are a work in progress:\n\n* [Jackalope-MongoDB](https://github.com/jackalope/jackalope-mongodb): Storing data in a MongoDB database.\n* [Jackalope-Prismic](https://github.com/jackalope/jackalope-prismic): Storing data in the Prismic.io content repository as a service.\n* Jackalope-Midgard1 (not online afaik): Read access to the midgard 1.0 server.\n* [Midgard2](https://github.com/bergie/phpcr-midgard2): PHPCR interfaces for the midgard2 content repository.\n\nIf you work on your own implementation, please let us know so we can add it\nhere right away. Even if its not yet working, others might want to join in and\nhelp.\n\n# Utilities\n\n* [phpcr-utils](https://github.com/phpcr/phpcr-utils): A couple of utility classes and console commands to work with phcpr, independent of the implementation.\n* [PHPCR Shell](https://github.com/phpcr/phpcr-shell): The PHPCR Shell aims to provide a complete shell interface to any PHPCR repository.\n* [Marmelab PHPCR Browser](https://github.com/marmelab/phpcr-browser):  Angular JS based PHPCR repository browser. Currently only supports Jackalope-Jackrabbit and Jackalope-Doctrine-DBAL.\n\n# Dependencies\n\nPHPCR provides a composer.json for [Composer](http://packagist.org/about-composer)\nand is available through [Packagist](http://packagist.org/).\n\n# History\n\nThe API was originally ported from Java to PHP by Karsten Dambekalns\nwith the help of others for the typo3/flow3 project.\n\nA first attempt at a port of JSR-170 to php has been made by\n[SimPCoRe](http://www.simpcore.org/), but it seems no applications have been\npublished. That version never tried to provide an API, but just implemented the\nJava interfaces literally.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpcr%2Fphpcr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphpcr%2Fphpcr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphpcr%2Fphpcr/lists"}