ctefan / redux
此包已被 废弃 并不再维护。未建议替代包。
Redux 的 PHP 版本
0.1.0
2018-10-30 19:24 UTC
Requires
- php: ^7.2
- evenement/evenement: ^3.0
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2020-08-29 07:08:48 UTC
README
Redux 的 PHP 版本,部分灵感来自 Redux 的端口,以及 RafaelFontes 和 rikbruil 的端口。
背景
这个库是为了在交互式 CLI 应用程序框架中使用而创建的。
示例用法
Reducer
// Create a reducer. $reducer = function($state, ActionInterface $action) { switch ($action->getType()) { case 'add': $state += $action->getPayload(); break; case 'subtract': $state -= $action->getPayload(); break; } return $state; }; $initialState = 0; // Create the store. $store = Redux::createStore($reducer, $initialState); // Dispatch some actions. $store->dispatch(new Action('add', 5)); $store->dispatch(new Action('subtract', 2)); assert(3 === $store->getState());
中间件
中间件只是可调用的。如果您不想使用闭包,可以扩展 Ctefan\Redux\Middleware\AbstractMiddleware
并实现方法 handleAction(ActionInterface $action, callable $next)
。
// Create the middleware. $middleware = function(callable $getState, callable $dispatch): callable { return function($next): callable { return function(ActionInterface $action) use ($next) { // TODO do something like fetching data from a remote server, waiting for a promise etc. return $next($action); } } }; // Create the store. $store = Redux::createStore($reducer, $initialState, Redux::applyMiddleware($middleware));