Creating a new SlimPHP application

This is part 1 of 6 in the "SlimPHP Introduction" series
This article was published 3 years ago. Due to the rapidly evolving world of technology, some concepts may no longer be applicable.

Whilst working with Martin, I’ve been using the Slim framework for the first time. I usually reach straight for Silex, so trying a similar (yet different) framework has been an interesting experience.

This is the first in a series of posts of how Martin and I built up our project architecture for a Slim application step by step. To follow along you’ll need Composer installed

The first thing to do is to bootstrap a project by creating a composer.json and installing Slim itself:

composer init --name you/slim-demo --description "A demo slim project" --author "You <[email protected]>" --type project --require "slim/slim:^3.7" --license MIT -n
composer install

Once you have Slim, the next thing to do is to create your initial route. To to this, create a file called index.php inside a folder called public

mkdir public
touch public/index.php

Add the following content to public/index.php – it’s a slightly modified version of the code in the documentation:

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require __DIR__.'/../vendor/autoload.php';

$container = new \Slim\Container;
$container['settings']['displayErrorDetails'] = true;

$app = new \Slim\App($container);
$app->get('/', function (Request $request, Response $response) {
    $response->getBody()->write("Hello World");
    return $response;

The only changes I made were to add a container and enable displayErrorDetails, which makes it easier to see any errors that occur.

In the same folder as composer.json, run php -t public -S localhost:8000 to spin up the built in PHP server, then visit http://localhost:8000 in a browser to see the page. Congratulations, you just created your first SlimPHP application!

You can find the code for this section on Github

Thoughts on this post

[…] creating a basic Slim application, the next thing we did was integrate Twig so that we could start creating layouts for our […]

Leave a comment?