1. Go to this page and download the library: Download aurasidera/sextant 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/ */
aurasidera / sextant example snippets
// Initializes just a couple of stuffs
$router = new \AuraSidera\Sextant\Router();
$router->setConditionFactory(new \AuraSidera\Sextant\ConditionFactory\Simple())
->setActionFactory(new \AuraSidera\Sextant\ActionFactory\Script());
// Declares routes
$router->addRoute(['GET', '/'], 'homepage.php')
->addRoute(['GET', 'users/{id}'], 'user.php')
->addRoute(['GET', 'users/{id}/activities/{from:date}/{to:date}'], 'user_activities.php')
->setDefaultAction(new \AuraSidera\Sextant\ActionFactory\NotFound());
// Reads request state
$state = \AuraSidera\Sextant\State::getStateFromServer();
// Gets the job done!
$router->match()
$url_pattern_condition = new \AuraSidera\ConditionFactory\UrlPattern();
...
$router->addRoute($url_pattern_condition('respond-to-any-method'), 'script.php');
$json_action = new \AuraSidera\ActionFactory\Json();
...
$router->addRoute(['GET', 'my-json'], $json_action('path-to-json.json'));
$url_pattern_condition = new \AuraSidera\ConditionFactory\UrlPattern();
$json_action = new \AuraSidera\ActionFactory\Json();
...
$router->addRoute($url_pattern_condition('respond-to-any-method'), $json_action('path-to-json.json'));
$method = new \AuraSidera\ConditionFactory\Method();
$url = new \AuraSidera\ConditionFactory\UrlPattern();
$and = new \AuraSidera\ConditionFactory\Conjunction();
$or = new \AuraSidera\ConditionFactory\Disjunction();
$not = new \AuraSidera\ConditionFactory\Negation();
...
$route->addRoute(
$and(
$or($not($method('GET')), $url('users/{id}')),
$or($method('GET'), $url('users'), $url('users/{id}/edit')),
$not($method('POST'))
),
'some-action.php'
);
$router->addRoute(
function (\AuraSidera\Sextant\State $state) {
if ($state->getUrl() == 'X') {
$state->addMatch('X') = 42;
return true;
}
else {
return count($state->getParametersAsDictionary()) < count($state->getHeadersAsDictionary());
}
},
function (\AuraSidera\Sextant\Sate $state) {
echo "This is the URL: " . $state->getUrl() . "<br>";
echo "And these are the matches I got: ";
print_r($state->getMatchesAsDictionary());
}
);
$state = \AuraSidera\Sextant\State::getStateFromServer();
$state->some_name = 42;
echo $state->some_name; // Displays 42
echo isset($state->fake) ? 'set' : 'unset'; // Displays 'unset'
echo $state->fake; // Displays '' (a null value is print)
$state['other_name'] = 21; // Array access works too, both for writing...
echo $state['other_name']; // ... and reading values
echo $state->other_name; // It is fine to mix both styles
// Instantiates a condition factory which produces conditions matching methods
$method_factory = new \AuraSidera\ConditionFactory\Method();
// Matches only HTTP/GET requests
$method_condition_get = $method_factory('GET');
// Matches only HTTP/POST requests
$method_condition_post = $method_factory('POST');
// Conditions can be used in routes
$router->addRoute($method_condition_get, 'action_1');
$router->addRoute($method_condition_post, 'action_2');
$method = new \AuraSidera\ConditionFactory\Method();
$router->addRoute($method('GET'), 'action_1');
$router->addRoute($method('POST'), 'action_2');
function my_condition(\AuraSidera\Sextant\State $state): bool {
return true;
}
$router->addRoute('my_condition', 'action');
// Istantiates an action factory rendering a JSON document
$json_action_factory = new \AuraSidera\ActionFactory\Json();
// Renders a JSON when called
$json_action = $json_action_factory('path-to-document.json');
// Actions can be used in routes
$router->addRoute('condition', $json_action);
$json = new \AuraSidera\ActionFactory\Json();
$router->addRoute('condition', $json('path-to-document.json'));