1. Go to this page and download the library: Download mcustiel/power-route 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/ */
use Mcustiel\PowerRoute\PowerRoute;
use Mcustiel\PowerRoute\Common\Factories\ActionFactory;
use Mcustiel\PowerRoute\Common\Factories\InputSourceFactory;
use Mcustiel\PowerRoute\Common\Factories\MatcherFactory;
use Mcustiel\PowerRoute\Common\Factories\ActionFactory;
Mcustiel\PowerRoute\Common\Conditions\ConditionsMatcherFactory;
use Mcustiel\PowerRoute\Matchers\NotNull;
use Mcustiel\PowerRoute\Matchers\Equals;
use Mcustiel\PowerRoute\InputSources\QueryStringParam;
use Mcustiel\PowerRoute\Actions\Redirect;
use Mcustiel\Creature\SingletonLazyCreator;
use Your\Namespace\MyMatcher;
use Your\Namespace\MyInputSource;
use Your\Namespace\MyAction;
$matcherFactory = new MatcherFactory(
[
'notNull' => new SingletonLazyCreator(NotNull::class),
'equals' => new SingletonLazyCreator(Equals::class),
'someSpecialMatcher' => new SingletonLazyCreator(MyMatcher::class)
]
);
$inputSourceFactory = new InputSourceFactory(
[
'get' => new SingletonLazyCreator(QueryStringParam::class),
'someSpecialInputSource' => new SingletonLazyCreator(MyInputSource::class)
]
);
$actionFactory = new ActionFactory(
[
'redirect' => new SingletonLazyCreator(Redirect::class),
'someSpecialAction' => new SingletonLazyCreator(MyAction::class)
]
);
$config = $yourConfigManager->getYourPowerRouteConfig();
$router = new PowerRoute(
$config,
$actionFactory,
ConditionsMatcherFactory($inputSourceFactory, $matcherFactory)
);
use Zend\Diactoros\Response;
use Zend\Diactoros\ServerRequestFactory;
use Zend\Diactoros\Response\SapiEmitter;
$request = ServerRequestFactory::fromGlobals();
$response = $router->start($request, new Response());
(new SapiEmiter())->emit($response);
namespace Your\Namespace;
class MyApplication
{
private $router;
public function __construct()
{
// Set up the application
// ...
$this->router = new PowerRoute(
$config,
$actionFactory,
ConditionsMatcherFactory($inputSourceFactory, $matcherFactory)
);
}
public function __invoke($request, $response, $next = null)
{
return $this->router->start($request, $response);
}
}
interface ActionInterface
{
public function execute(\Mcustiel\PowerRoute\Common\TransactionData $transactionData, $argument = null);
}
function __invoke($request, $response, $next = null);
[ 'myMiddleware' => new OtherMiddleware() ]
[
'myMiddleware' => new LazyCreator(MyMiddlewareImplementation::class)
]
$implementation = new MyMiddleWareImplementation();
$implementation($request, $response, new OtherMiddleware());
interface ActionInterface
{
/**
* @param \Mcustiel\PowerRoute\Common\TransactionData $transactionData This object is modified inside the class.
* @param mixed $argument This optional argument comes from the config of PowerRoute!
*/
public function execute(TransactionData $transactionData, $argument = null);
}
class Redirect implements ActionInterface
{
use PlaceholderEvaluator;
public function execute(TransactionData $transactionData, $argument = null)
{
return $transactionData->setResponse(
$transactionData->getResponse()
->withHeader(
'Location',
$this->getValueOrPlaceholder($argument, $transactionData)
)
->withStatus(302)
);
}
}