renanliberato/exposer-store

PHP 包,用于通过类似 Redux 的 API 管理应用状态

0.3.2 2020-08-17 23:53 UTC

This package is auto-updated.

Last update: 2024-09-19 07:35:24 UTC


README

在类似 Redux 的 API 中管理后端应用状态

安装

composer require renanliberato/exposer-store

入门

此代码片段使用了几乎所有可用的 API,所以请查看它,并检查您是否可以在您的应用中重现它。

$initialState = [
    'name' => 'Renan'
];

$nameReducer = function($state, $action) {
    switch ($action['type']) {
        case 'RENAME':
            $state['name'] = $action['name'];
            return $state;
        default:
            return $state;
    }
};

class LogMiddleware extends \RenanLiberato\ExposerStore\Middlewares\AbstractMiddleware
{
    public function process($action) {
        var_dump($action);

        return $this->next($action);
    }
}

$store = new \RenanLiberato\ExposerStore\Store\Store(
    $initialState,
    [
        'name' => $nameReducer
    ],
    [
        LogMiddleware::class
    ]
);

// This will use a cookie to save and load your app state.
$store->setPersistor(new \RenanLiberato\ExposerStore\Persistors\CookiePersistor('my_app_cookie', 'my_key'));

echo json_encode($store->getState());
// {"name":"Renan"}

$store->action(['type' => 'RENAME', 'name' => 'José']);

echo json_encode($store->getState());
// {"name":"José"}