There's a number of ways to do this. If the functions have no side effects, then one option would be to have a utilities class with static methods in it it.
Another option would be to extend all your route actions from a common class and use that:
// CommonAction.php
class CommonAction
{
protected function getAlias() { }
}
// HomeAction.php
class HomeAction extends CommonAction
{
public function __construct(/*dependencies here*/) { }
public function __invoke($request, $response, $args) {
// route action code here
return $response;
}
}
// index.php
$app = new Slim\App(require('settings.php'));
$container = $app->getContainer();
$container[HomeAction::class] = function ($c) {
return new HomeAction(/*dependencies*/);
}
$app->get('/', HomeAction::class);
$app->run();
If the functionality is part of your domain layer, then inject those classes into your route actions as a dependency.