1. Go to this page and download the library: Download arefshojaei/redux library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
# Action
$incrementAction = Redux::createAction("INCREMENT");
# call to get this details
$incrementAction()
[
"type" => "INCREMENT",
"payload" => null
]
# call to pass argument as payload data to get this details
$incrementAction(["status" => "OK"])
[
"type" => "INCREMENT",
"payload" => [
"status" => "OK"
]
]
$store = Redux::createStore($counterReducer);
# Get State from the Store
echo $store->getState(); # 0
# Dispatch Action
$store->dispatch($incrementAction()); # 1
$store->dispatch($incrementAction()); # 2
# Get new State from the Store
echo $store->getState(); # 2
# Subscriber
$unSubscribe = $store->subscribe(function(\Redux\Contracts\Interfaces\Store $store) {
echo "[Store] updated!" . PHP_EOL;
echo "[State] value: " . $store->getState();
});
# Get State from the Store
echo $store->getState() . PHP_EOL; # 0
# Dispatch Action
$store->dispatch($incrementAction()); # 1
$store->dispatch($incrementAction()); # 2
$unSubscribe(); # Stop the Subscriber to log
$store->dispatch($incrementAction()); # 3
# Get new State from the Store
echo $store->getState(); # 3
# Logger
$logger = Redux::createMiddleware(function($store, $action, $next) {
echo "- Logger Middleware -";
echo "[State] value: " . $store->getState();
echo "[Action] type: " . $action['type'];
# Call next Middleware or Reducer
$next($action);
});
# Apply Middlewares
$middlewares = Redux::applyMiddleawres($logger);
# Pass Middlewares as Argument to the Store that has defined yet
$store = Redux::createStore($counterReducer, $middlewares);
# Put autoload file path
incrementAction = Redux::createAction("INCREMENT");
$decrementAction = Redux::createAction("DECREMENT");
$resetAction = Redux::createAction("RESET");
# Reducer
$initState = 0;
$counterReducer = Redux::createReducer($initState, [
$incrementAction()["type"] => fn($state, $action) => $state + 1,
$decrementAction()["type"] => fn($state, $action) => $state - 1,
$resetAction()["type"] => fn($state, $action) => $state - $state,
]);
# Middleware
$logger = Redux::createMiddleware(function($store, $action, $next) {
echo "- Logger Middleware -";
echo "[State] value: " . $store->getState();
echo "[Action] type: " . $action['type'];
# Call next Middleware or Reducer
$next($action);
});
$middlewares = Redux::applyMiddlewares($logger);
# Store
$store = Redux::createStore($counterReducer, $middlewares);
# ---------- Usage ----------
# Subscriber
$unSubscribe = $store->subscribe(function(\Redux\Contracts\Interfaces\Store $store) {
echo "[Store] updated!" . PHP_EOL;
echo "[State] value: " . $store->getState();
});
# Get State from the Store
echo $store->getState() . PHP_EOL; # 0
# Dispatch Action
$store->dispatch($incrementAction()); # 1
$store->dispatch($incrementAction()); # 2
$unSubscribe(); # Stop the Subscriber to log
$store->dispatch($incrementAction()); # 3
# Get new State from the Store
echo $store->getState(); # 3
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.