netglue / prismic-client
Prismic.io 的 PHP API 客户端
Requires
- php: ~8.1 || ~8.2 || ~8.3
- ext-json: *
- laminas/laminas-escaper: ^2.9
- php-http/discovery: ^1.18.0
- psr/cache: ^1.0.0 || ^2.0.0 || ^3.0.0
- psr/http-client: ^1.0
- psr/http-client-implementation: *
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- ext-curl: *
- doctrine/coding-standard: ^12.0
- laminas/laminas-diactoros: ^3.3.0
- php-http/cache-plugin: ^1.8.1
- php-http/curl-client: ^2.3.1
- php-http/mock-client: ^1.6
- phpunit/phpunit: ^10.5.0
- psalm/plugin-phpunit: ^0.18.4
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7.2
- symfony/cache: ^6.4 || ^7.0
- vimeo/psalm: ^5.16.0
- 2.0.x-dev
- 1.11.x-dev
- 1.10.x-dev
- 1.10.0
- 1.9.x-dev
- 1.9.0
- 1.8.x-dev
- 1.8.1
- 1.8.0
- 1.7.x-dev
- 1.7.0
- 1.6.x-dev
- 1.6.0
- 1.5.x-dev
- 1.5.0
- 1.4.x-dev
- 1.4.0
- 1.3.x-dev
- 1.3.0
- 1.2.x-dev
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.x-dev
- 1.1.1
- 1.1.0
- 1.1.0-RC1
- 1.0.0
- 0.8.0
- 0.7.0
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.0
- 0.1.0-beta
- dev-renovate/lock-file-maintenance
- dev-renovate/phpunit-phpunit-11.x
This package is auto-updated.
Last update: 2024-09-25 00:11:35 UTC
README
这是一个 Prismic.io 无头 CMS 的非官方 PHP 客户端。为了保持简单,这个库仅支持 API 的第 2 版,因此您必须确保以 https://my-repo.prismic.io/api/v2
的格式指定您的仓库 URL。
与其他 prismic 客户端几乎没有向后兼容性,因此这绝对不是即插即用的替代品。尽管如此,您会发现其中大部分仍然很相似。
功能
- 使用 PSR-18 HTTP 客户端与 API 进行通信,因此没有依赖特定的客户端实现。该库依赖于您手动提供 HTTP 客户端或回退到 HTTPlug Discovery 以确定已可用的客户端。
- 可选缓存。您可以选择使用可以为您缓存响应的 HTTP 客户端 如这个小美物,或者向命名构造函数提供 PSR 缓存池。
- 在主接口中提供有用的方法来检索下一页/上一页分页结果集或合并所有分页结果到单个结果集。
- 可预测且一致的异常,帮助您从错误条件中优雅地恢复。
- 可迭代和可过滤的集合来表示 Slices、groups 和 RichText,这使得定位特定类型的内容变得非常简单。
- 完全分离且可替换的 HTML 序列化。实际上,内容对象根本没有任何
atHtml()
或asText()
方法。有一个可调用的已发货 HTML 序列化器,但您可能不想使用它,而是直接在视图层中处理您的文档。 - 轻松实现您自己的结果集和文档类型,替换默认的已发货实现。您有一个 'Case Study' 类型?将您的文档填充到
YourModel\CaseStudy
对象中,以便您可以在视图和其他地方构建一个健壮的内容模型。 - 几乎没有任何可空性……所有集合都保证返回类型为
Prismic\Fragment
,这使得您更容易测试特定类型或其 emptiness。
限制
- 如前所述,仅支持 API 的第 2 版
- 不支持实验 (A/B 测试),因为 Prismic 本身尚未实施此功能,因此实现一个无法使用的功能没有意义 (悲伤的脸) - 话虽如此,如果 A/B 测试在未来再次成为现实,它将是首要任务。
- 没有内置缓存 (也请参阅“功能”)
安装
使用 composer 安装: composer require netglue/prismic-client
您还需要一个 PSR-18 HTTP 客户端实现,其中有很多,例如
要使用来自 php-http
的 curl 适配器,请执行 composer require php-http/curl-client
文档
文档正在制作中,托管在公共 prismic 仓库中 (显然!)
您可以通过克隆库、转到源并执行 composer install
,然后执行 composer serve
来查看文档。这将启动 PHP 内置服务器在 http://127.0.0.1:8080 上,显示文档。
示例与实例
请查看 ./samples
目录;那里包含用于渲染文档和示例的文档浏览器,以及用于设置水化结果集、链接解析器实现和其他内容的示例。
值得一提的是,文档浏览器还支持预览功能,您可以将 http://127.0.0.1/preview
添加为 Prismic 仓库中的预览目标,以便实时预览更改。
测试
一旦您已经克隆了库并安装了依赖项,就可以运行单元测试。默认情况下会跳过烟雾测试,但您可以通过在 test/config/config.php
中编写配置文件 (其中也包含了一个示例) 或通过设置几个环境变量来针对单个仓库运行烟雾测试。
export PRISMIC_REPO="https://my-repo.prismic.io/api/v2" export PRISMIC_TOKEN="Some access token or not" vendor/bin/phpunit
其他客户端
官方工具包可以在 prismicio/php-kit 找到。
官方工具包的另一个已废弃的分支可以在 netglue/prismic-php-kit 找到。废弃分支的原因是希望从一张白纸开始,利用最新的 PSRs(PHP 标准推荐)进行 HTTP 工厂和客户端开发,完全将 HTML 序列化过程与内容模型分离,并提供更多灵活的方法来将内容模型水化为领域对象 (或者不是这样!)。