SlimPHP 2.x Custom Classes for Routes
If you want custom classes for your slim project you can do so by adding a route in the index.php file like this:
<?php
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/hello/:name','Namespace\Controller:function');
$app->run();
?>
Now if your namespace is called foo and the Class bar with a function baz you then your file foo/bar.php will look like:
<?php
namespace foo;
class Bar{
public function baz($name){
echo 'hello ' . $name . '!';
}
}
To Get to the $app variable in the custom class (for getting post variables for instance) you can add this to your Class:
protected $_app;
public function __construct() {
$this->_app = \Slim\Slim::getInstance();
}
If you will be having a lot of classes, you can add this to a parent class, and have Bar extend that class Like so:
<?php
namespace Foo;
Class BaseClass{
protected $_app;
public function __construct()
{
$this->_app = \Slim\Slim::getInstance();
}
}
?>
Other file:
<?php
namespace Foo;
class Bar extends BaseClass{
public function __construct()
{
parent::construct();
}
public function baz($name){
echo 'hello ' . $name . '!';
}
}
?>