Slim 3 – Manuelles Setup mittels Composer

Tutorial Slim

von Ardian Shala, 02.02.2018 - update: 30.05.2019
Slim 3 ist ein minimalistisches PHP Framework, welches das Erstellen von einer REST API vereinfacht.
Mit folgendem manuellem Slim Setup lässt sich die Anzahl der Dependencies besser regeln und überschauen.
Vorraussetzung:

Downloads:

Github Repository

Composer initialisieren

Folgendes Script ist von der Composer Website kopiert.
Es erstellt eine composer.phar Datei und initialisiert Composer für das Projekt.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Slim als Dependency eintragen

Mittels Composer lässt sich Slim nun als Dependency installieren.
Zusätzlich erstellt dies den Ordner vendor (ähnlich dem Ordner „node_modules“ bei Nodejs).

php composer.phar require slim/slim "^3.0"

Ordner „public“ und index.php erstellen

Öffentliche Scripts sollten in den Ordner „public“ erstellt werden.
Nun wird die Datei „index.php“ mit folgendem Inhalt erstellt, welche das Grundgerüst einer Slim App darstellt.

<?php
require '../vendor/autoload.php'; //autoload feature

$app = new \Slim\App; //neue Slim App Instanz
$app->run(); //starten der App

API Route eintragen

Um API Routen definieren zu können, werden Request und Response benötigt, welche in den Callback injected werden.
Angepasste index.php Datei:

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

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

$app = new \Slim\App; //neue Slim App Instanz

$app->get('/', function (Request $request, Response $response) {
    return $response->withJson("Hello Slim3 API");
});

$app->run(); //starten der App 

Seite aufrufen

Die Seite lässt sich nun je nach Installation (Wamp, Xamp,…) über localhost in einem SubFolder „slim-api-test“ wie folgt aufrufen.

localhost/slim-api-test/public/index.php/

.htaccess erstellen

Im Ordner Public wird die Datei „.htaccess“ erstellt.
Mittels .htaccess lässt sich das ständige Integrieren von dem Segment „index.php“ in der Url vermeiden.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Nun lässt sich die Seite ohne index.php Segment aufrufen

localhost/slim-api-test/public/

API erweitern – Fehler anzeigen

Während der Entwicklung ist es hilfreich auftretende Fehler anzuzeigen.
Dies lässt sich mittels folgender Konfigration im App Constructor erweitern.

$app = new \Slim\App(
    ['settings' => [
        'displayErrorDetails' => true,
    ]]
);

Fazit

Mittels einfachem manuellen Slim Setup lässt sich schnell eine PHP API definieren, welche im Gegensatz zur automatischen Erstellung (siehe Slim Website) weniger Dependencies beinhaltet.
Nachdem Slim mit Composer initialisiert wurde, kann der komplette Inhalt auf einem Server deployed werden (inklusive „vendor“)

#api #php #rest #slim #slimframework #webapi

Autor: Ardian Shala

Ersteller der Webseite MuchaDev. Selbstständiger IT Constultant für Frontend Technologien.