Slim to mikro framework umożliwiający bardzo szybkie pisanie prostych ale i potężnych aplikacji internetowych oraz interfejsów API, które obsługują dane. Jest to także świetne narzędzie do prototypowania.
Według statystyk zaprezentowanych przez serwis www.sitepoint.com, framework nie odniósł wielkiego sukcesu pod względem popularności gdyż uplasował się aż na piętnastym miejscu w rankingu.
Głównymi cechami tego frameworku są:
- pozwala na pełną kontrolę nad zewnętrznymi narzędziami
- ma bardzo prostą budowę – logikę aplikacji można zawrzeć w jednym pliku
- cała aplikacja pisana jest w oparciu o konstruktor klasy Slim\App
- posiada wbudowany routing (z możliwością przekazywania parametrów do kontrolera)
- ma wbudowaną obsługę serwisów (Dependency Container)
- moduł zapisu stanu aplikacji pozwala na tworzenie logów
- współpracuje z composer'em
- klasa Request pozwala na szybkie wydobywanie danych z zapytania
- klasa Response pozwala w prosty sposób tworzyć odpowiedzi (w tym również ich nagłówki)
- posiada wbudowaną obsługę podstawowych błędów – 404 i 405
- świetnie współpracuje z popularnymi dodatkami, takimi jak np. współpraca z językiem programowania widoków – twig
- posiada pewną liczbę dedykowanych dodatków – np. tak jak wyżej twig, caching HTTP, zabezpieczenie CSRF, wyświetlanie wiadomości typu flash itp.
- istnieje możliwość generowania widoku przy użyciu języka PHP (dodatkowy pakiet)
- cały framework wraz z dokumentacją jest dostępny w repozytorium na stronie github
- w swojej postaci jest bardzo ubogi, lecz funkcjonalny
- dużą zaletą jest możliwość dowolnej rozbudowy, która dzięki prostej budowie, jest bardzo łatwa.
Przykładowy kod w Slim
Slim Przykład #1
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response) {
$name = $request->getAttribute('name');
$response->getBody()->write("Hello, $name");
return $response;
});
$app->run();
?>
Slim Przykład #2
<?php
$container = $app->getContainer();
$container['logger'] = function($c) {
$logger = new \Monolog\Logger('my_logger');
$file_handler = new \Monolog\Handler\StreamHandler("../logs/app.log");
$logger->pushHandler($file_handler);
return $logger;
};
?>