phpcr/phpcr

PHP 内容存储库接口

2.1.13 2024-07-03 15:07 UTC

README

此存储库包含PHPCR标准的接口。

JSR-283规范定义了内容存储库(CR)的API。PHP内容存储库接口旨在在PHP中提供该API。PHPCR是JSR-333的一部分,即Java内容存储库的下一个版本。

这里有一些信息: http://phpcr.github.io

文档

简介

PHP内容存储库是一个API。也就是说,它定义了一种标准化的方式来访问和操作内容。与任何通用API一样,主要目标是 解耦后端和前端。如果您针对PHPCR API进行编码,则您的代码应在所有PHPCR实现上运行。JCR的负责人David Nuescheler提供了以下 使用内容存储库的优势

  • “内容存储库”的功能定义
  • 通用词汇!
  • 不再学习(数十个)(丑陋的)专有API
  • 编写(主要是)可移植的代码,用于文档管理、Web内容管理、源代码控制
  • 比较存储库功能
  • 没有更多的信息孤岛和供应商锁定 内容中心化基础设施

PHPCR是从Java内容存储库(JCR)标准改编的,因为这是一个广泛使用且经过深思熟虑的标准。存在一些PHPCR的实现,您可以使用。以下列出已知实现。

进一步阅读

端口状态

PHPCR在适当的地方遵循Java内容存储库JCR API。在Java和PHP不同之处,我们试图遵循PHP的逻辑,同时保持原始API的精神。API与Java API具有相同的表达性。大多数JSR-283/JSR-333文档和代码示例都可以直接使用。

PHPCR和JCR之间的主要区别

  • PHP没有方法重载。同名方法只有参数数量和/或类型不同,已被合并为一种方法。
  • PHP是弱类型,这使得Value接口和大量几乎相同的迭代器变得多余。

PHPCR和JCR之间差异的详细列表在文件doc/JCR_TO_PHPCR.txt中

测试

单元测试

由于PHPCR是API定义,因此在没有实现的情况下对其进行测试并不多。尽管如此,仍有一些具有单元测试的具体类。只需使用phpunit -c tests/运行它们即可。

API测试

PHPCR功能性的API测试套件可在https://github.com/phpcr/phpcr-api-tests/找到。所有实现都必须针对此测试套件进行测试,以确保它们可以互换。

实现

Jackalope将内容存储库逻辑与存储后端分离。目前正在开发几个后端驱动程序。

以下内容仍在进行中

  • Jackalope-MongoDB:在MongoDB数据库中存储数据。
  • Jackalope-Prismic:以服务的形式在Prismic.io内容存储库中存储数据。
  • Jackalope-Midgard1(据我所知目前未上线):对midgard 1.0服务器的读取访问。
  • Midgard2:Midgard2内容存储库的PHPCR接口。

如果您在自己的实现上工作,请告诉我们,这样我们就可以立即将其添加到这里。即使它尚未工作,其他人可能也希望加入并帮忙。

实用工具

  • phpcr-utils:一些实用类和命令行工具,用于与PHPCR交互,不受实现方式的影响。
  • PHPCR Shell:PHPCR Shell旨在为任何PHPCR存储库提供完整的shell接口。
  • Marmelab PHPCR 浏览器:基于Angular JS的PHPCR存储库浏览器。目前仅支持Jackalope-Jackrabbit和Jackalope-Doctrine-DBAL。

依赖项

PHPCR为Composer提供了composer.json文件,并通过Packagist提供。

历史

该API最初由Karsten Dambekalns从Java迁移到PHP,由其他人协助进行typo3/flow3项目。

对JSR-170的第一次PHP移植尝试由SimPCoRe完成,但似乎没有发布任何应用程序。该版本从未尝试提供API,只是直接实现了Java接口。