automattic / stream-builder
一个从多种来源生成内容流的库。
Requires
- php: >=7.4
- symfony/yaml: ^4.4.44 || ^5.4.23 || ^6.2.10
Requires (Dev)
- ext-mbstring: *
- ergebnis/composer-normalize: ^2.8
- friendsofphp/php-cs-fixer: ^3.18
- infection/infection: >=0.10.5
- phan/phan: >=1.1
- php-coveralls/php-coveralls: ^2.6
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/phpstan: >=0.10
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^8.3
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: >=2
README
StreamBuilder
StreamBuilder 是 Tumblr 定制的框架,我们用它来驱动仪表板和平台上大部分的内容流。其主要架构围绕着“内容流”。在我们的实现中,这些流可以是博客文章、你关注的博客列表、使用特定标签的文章或与搜索相关的文章。这些都是不同的流类型,可以混合在一起,根据某些标准进行筛选,根据相关性或参与可能性进行排序,等等。
在今天的 Tumblr 仪表板上,你可以看到来自你关注的博客的文章,与来自你关注的标签的文章混合,与博客推荐混合。每个都是独立的流,有自己的逻辑,但共享相同的框架。我们在一定的时间间隔内注入这些推荐,根据你屏蔽的人筛选文章,如果你启用了“优先显示最佳内容”设置,则根据相关性对文章进行排序。这些都是 StreamBuilder 为我们提供的功能示例。
此存储库中包含的内容
- 今天在 Tumblr 上使用,为平台上几乎每个内容流提供动力的完整框架代码库。
- 用于组合内容流、筛选、注入和排序的 YAML 语法。
- 用于程序化组合、筛选、排序、注入和调试流的高级抽象。
- 用于组合流的高级抽象,例如用于流内流的轮播。
- 用于复杂流模板的基于游标的分页抽象。
- 涵盖库公开接口和大部分底层代码的单元测试。
我们仍在努力添加更多文档和示例。有关更多信息,请参阅 Tumblr 工程博客上的公告文章。
通过阅读 StreamBuilder 初学者指南 开始。我们还在 example/
文件夹中提供了一个示例应用程序来尝试!
安装
StreamBuilder 预期 PHP 7.4+。
使用 Composer 安装 StreamBuilder,在你的项目中运行 composer require automattic/stream-builder
。
要访问示例和单元测试,请使用 composer require --prefer-source automattic/stream-builder
进行本地 git 克隆。
贡献
如果你想修改 StreamBuilder 代码,请
- 创建一个问题并描述你的想法或所需更改以供讨论。请提及
Automattic/stream-builders
以提高可见性和反馈。请在此步骤之前完成此操作! - 创建一个 PR 并将
Automattic/stream-builders
添加到审阅者。请为您的更改编写单元测试或更新单元测试。 - 确保单元测试和 PHPCS 返回绿色(使用
make test
运行单元测试套件,使用make cs
修复代码风格问题)。 - 添加关于您的更改和测试说明的描述。
- 如果您正在执行破坏性更改,请使其非常明确!从现有类更改命名空间?这是一个破坏性更改。更改游标的工作方式?这也是一个破坏性更改。
如果您正在执行重大重构、更改接口或任何其他破坏性更改,我们可能不会批准您的 PR。Tumblr 依赖于 StreamBuilder 来管理我们所有的内容流,除非有非常充分的理由,否则我们不想更改大量代码。
一旦批准,我们将合并您的PR并发布新版本。然后您可以在您的composer.json
文件中更新版本号并部署您的更改。
所有破坏性更改都将作为主版本发布。如果您正在使用主版本,您需要更新您的代码以使用新接口。我们预计这种情况不会经常发生。
创建新版本
仅适用于具有仓库写权限的Automatticians
- 通过在此仓库中通过PR合并您的更改;请参阅贡献部分。
- 前往https://github.com/Automattic/stream-builder/releases并点击"草稿新版本"。
- 选择"选择标签"并创建新版本,如果您尚未创建。不是破坏性更改?通过0.0.1递增小版本。破坏性更改?通过0.1.0递增主版本。
- 请确保您正在针对
main
分支。 - 点击"生成发布说明"。这将生成自上次发布以来合并的所有PR列表。
- 点击绿色的"发布版本"按钮。
您是Tumblr员工吗?现在您可以更新任何内部composer.json
文件中的版本号并部署您的更改。
经常发布!我们希望确保尽可能频繁地发布新功能和错误修复。我们不希望陷入一次发布大量更改的情况。