This documentation is written along the guidelines of educational grade documentation discussed in the infracamp project. Please ask and document issues., (*1)
Quicklinks - Assets - Authentication - Session - OAuth - Firewall ACL, (*2)
Classes for micro-app and libraries are not prefixed with phore_
for convenience.
(It's not framework for framework stuff), (*3)
index.php:
, (*4)
$app = new App(); $app->router ->onGet("/", // Define a Action for HTTP-GET-Requests to / function() { return "Hello world"; // Important: Return true if output was already sent. } ); $app->serve(); // Run the App
We suggest using composer:, (*5)
composer require phore/micro-app
Define routes (Path) and connect them to controller functions:, (*6)
Execute the function if the browser hits http://domain.xy/hello/world
:, (*7)
$app->router->onGet("/hello/world", function() { echo "Hello World"; return true; });
Define Parameters (Prefix :
) and optional parameters (?
) in Routes:, (*8)
$app->router->onGet("/api/create/:userId/:userName?", function(RouteParams $routeParams) { echo "Hello {$routeParams->get("userId")} - {$routeParams->get("userName", 'Default Username')}"; return true; });
$routeParams
is automaticly generated by Dependency injection., (*9)
Delegate a request to a separate class: see Example, (*10)
$app->router->delegate("/admin/*", AdminController::class);
Add a controller Class:, (*11)
class ActionCtrl { const ROUTE = "/v1/some/route" public function on_get(){} } $app->addCtrl(ActionCtrl::class);
Parameters at controller function are generated by Dependency Injection and may contain any service defined in DiContainer., (*12)
Request specific parameters are:, (*13)
Parameter Name | ClassName | Description |
---|---|---|
$request |
Request |
The full request object |
$post |
Post |
Post data |
$get |
Get |
Get data (Query Params) |
$body |
Body |
Body object |
$files |
Files |
|
$route |
Route |
The current route object |
$params |
Params |
Container with QueryParameters |
$routeParams |
RouteParams |
Container with parameters |
$GET |
QueryParams |
Query parameters |
$POST |
QueryParams |
Parameters send by HTTP-POST |
The app-class is a dependency injection container. You can register
values or services using the define()
method., (*14)
Define a value to property version
:, (*15)
$app->define("version", new DiValue("1.0.1")); echo $app->version;
Define a factory to property configFile
:, (*16)
$app->define("configFile", new DiService(function() { return file_get_contents("config-file.json") }); echo $app->configFile;
The system has build-in functions for error-handling:, (*17)
json
error/exception handling:
$app->setOnExceptionHandler(new JsonExceptionHandler());
Instead of formating the Result your own, the framework uses a
result-handler to format results returned by return
in controller., (*18)
$app->setDefaultResultHandler(new JsonResultHandler());
in the controller you can then just return the data:, (*19)
$app->get("/", function() { return ["data"=>"someData"]; }