实现类似Flux的单向流架构的服务端库

dev-master 2015-02-16 23:08 UTC

This package is auto-updated.

Last update: 2024-09-12 03:31:01 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

介绍

plux 是一个PHP库,旨在回答一个简单的问题

在服务端实现类似 Flux 的单向流架构是否有意义?

快速入门

安装

composer require mattjmattj/plux

初始化

在你的应用程序/框架的启动代码中,需要调用

\Plux\Plux::initialize();

Plux 将创建一个调度器,该调度器将处理动作并将它们传递给注册的存储。

存储

存储类似于Flux中的存储。它们应该根据给定的动作执行业务部分,该动作通过它们的 handle 方法传递给它们。请注意,使用 handle 方法只是StoreTrait提供的快捷方式,但任何 callable 都可以与调度器一起使用。

你必须将你的存储注册到Plux,并给它们一个名字

\Plux\Plux::addStore('Foo', new \My\Super\Store\Bar());

该名称将允许应用程序的其它部分调用

\Plux\Plux::getStore('Foo');

存储应该在执行动作时发出事件。Plux依赖于 evenement/evenement 来实现存储事件。

动作

必须创建和分发动作,以便注册的存储执行其工作。动作由两个元素组成

  • 一个 类型
  • 一个 数据 数组

创建动作后,您必须分发它

$action = new \Plux\Action ('type', ['foo' => 'bar']);
\Plux\Plux::getDispatcher()->dispatch($action);

组件

理论上每个人都可以监听存储事件,但为了使事情更容易,Plux提供了一个带有单个 render 函数的组件特征。当调用 render 时,组件应该输出它需要的任何内容。这部分留得很开放,您不必使用组件特征。

示例

一个完整但较小的实现示例可以在 这里 找到

讨论

你认为即使在PHP的按请求上下文中,实现单向流架构是一个很好的主意吗?你认为这是荒谬的吗?不要犹豫,在 专属问题 下留下评论

许可证

plux 在 FreeBSD License 下发布