mattjmattj / plux
实现类似Flux的单向流架构的服务端库
dev-master
2015-02-16 23:08 UTC
Requires
- php: >=5.4.0
- evenement/evenement: ~2.0
Requires (Dev)
- phpunit/phpunit: 4.3.*
This package is auto-updated.
Last update: 2024-09-12 03:31:01 UTC
README
介绍
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 下发布