phpcr / phpcr
PHP 内容存储库接口
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0
- 2.1.x-dev
- 2.1.13
- 2.1.12
- 2.1.11
- 2.1.10
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.1.0-RC2
- 2.1.0-RC1
- 2.1.0-beta12
- 2.1.0-beta11
- 2.1.0-beta10
- 2.1.0-beta9
- 2.1.0-beta8
- 2.1.0-beta7
- 2.1.0-beta6
- 2.1.0-beta5
- 2.1.0-beta4
- 2.1.0-beta3
- 2.1.0-beta2
- 2.1.0-beta1
- dev-fix-typehints
- dev-acl
- dev-query_constants
This package is auto-updated.
Last update: 2024-09-03 15:26:24 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-Jackrabbit:将请求映射到java Jackrabbit实例。目前功能最完整的实现。
- Jackalope-DoctrineDBAL:使用Doctrine数据库抽象层在关系型数据库中存储数据。
以下内容仍在进行中
- 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接口。