Download the PHP package tox2ik/rka-slim-controller-json without Composer
On this page you can find all versions of the php package tox2ik/rka-slim-controller-json. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download tox2ik/rka-slim-controller-json
More information about tox2ik/rka-slim-controller-json
Files in tox2ik/rka-slim-controller-json
Package rka-slim-controller-json
Short Description Dynamically instantiated controller classes for Slim Framework
License BSD-3-Clause
Homepage https://github.com/tox2ik/rka-slim-controller
Informations about the package rka-slim-controller-json
RKA Slim Controller
An extension to Slim Framework that allows you use to dynamically instantiated controllers with action methods wherever you would use a closure when routing.
The controller can optionally be loaded from Slim's DI container, allowing you to inject dependencies as required.
Installation
composer require akrabat/rka-slim-controller
Usage
Use the string format {controller class name}:{action method name}
wherever you would usually use a closure:
e.g.
$app = new \RKA\Slim();
$app->get('/hello:name', 'App\IndexController:home');
You can also register the controller with Slim's DI container:
$app = new \RKA\Slim();
$app->container->singleton('App\IndexController', function ($container) {
// Retrieve any required dependencies from the container and
// inject into the constructor of the controller
return new \App\IndexController();
});
$app->get('/', 'App\IndexController:index');
Controller class methods
RKA Slim Controller will call the controller's setApp(), setRequest()
and setResponse() methods if they exist and populate appropriately. It will
then call the controller's `init()`` method.
Hence, a typical controller may look like:
<?php
namespace App;
class IndexController
{
// Optional properties
protected $app;
protected $request;
protected $response;
public function index()
{
echo "This is the home page";
}
public function hello($name)
{
echo "Hello, $name";
}
// Optional setters
public function setApp($app)
{
$this->app = $app;
}
public function setRequest($request)
{
$this->request = $request;
}
public function setResponse($response)
{
$this->response = $response;
}
// Init
public function init()
{
// do things now that app, request and response are set.
}
}
Example project
Look at slim-di.