Slim Framework คืออะไร



ถ้าคุณเคยเขียน PHP ล้วน ๆ (ซีรีส์ PHP ของเรา) แล้วเบื่อการเขียน router เอง จัดการ request/response เอง — Slim คือขั้นถัดไปที่เบาที่สุด

micro-framework คืออะไร

full-stack (Laravel, Symfony)micro (Slim, Lumen)
routing + HTTP
ORM / database layer✅ Eloquent / Doctrine❌ เลือกเอง
template engine✅ Blade / Twig❌ เลือกเอง (มี slim/twig-view เป็น add-on)
CLI / scheduler / queue
validation / auth / mail❌ เลือกเอง
ขนาด (dependency)ใหญ่ (~100+ packages)เล็ก (~10 packages)
เวลาเรียนจบสัปดาห์1–2 วัน

Slim ให้แค่ routing + middleware + DI container — ที่เหลือคุณ composer require เอาเอง

$app->get('/hello/{name}', function ($request, $response, $args) {
    $response->getBody()->write("สวัสดี {$args['name']}");
    return $response;
});
$app->run();

Slim สร้างบน PSR standards

Slim 4 ยึด PHP-FIG standards เต็มตัว:

  • PSR-7 — HTTP message interface (ServerRequestInterface, ResponseInterface) — request/response เป็น object มาตรฐาน
  • PSR-15 — HTTP middleware (MiddlewareInterface) — middleware ของ Slim ใช้ได้กับ framework อื่นที่ทำตาม PSR-15
  • PSR-11 — Container interface — เสียบ DI container ตัวไหนก็ได้ (PHP-DI, Pimple, Symfony DI)

ผลคือ โค้ดที่เขียนไม่ผูกกับ Slim มากเท่าที่คิด — middleware ที่เขียนสำหรับ Slim เอาไปใช้กับ Mezzio (Laminas) ได้ ความรู้ PSR-7 ที่ได้ใช้กับทุก modern PHP framework

Slim เหมาะกับอะไร

  • REST API / JSON API — จุดแข็งที่สุด, overhead ต่ำ, ตอบเร็ว
  • microservices — service เล็ก ๆ ที่ทำงานเดียว
  • backend ของ SPA / mobile app
  • webhook receiver, proxy, BFF (backend for frontend)
  • prototype ที่ต้องเริ่มเร็ว

Slim ไม่เหมาะกับอะไร

  • เว็บแอปใหญ่ที่มีทุกอย่าง (admin panel, user management, mail, queue, cron, i18n) — Laravel จบเร็วกว่าเยอะเพราะมีให้หมด
  • ทีมที่อยากได้ convention ชัด ๆ ทุกอย่าง — Slim ให้อิสระ (= ต้องตัดสินใจเยอะ)
  • คนที่เพิ่งเริ่ม PHP — ควรแน่น PHP + Composer + OOP + PSR ก่อน (ซีรีส์ PHP บทที่ 22–28)

Slim เทียบกับเขียน PHP ล้วน

จากซีรีส์ PHP บทที่ 43–46 เราเขียน router, front controller, middleware เองด้วยมือ — Slim ทำให้:

งานPHP ล้วนSlim
routing + paramsเขียน regex เอง$app->get('/users/{id:[0-9]+}', ...)
request/response$_GET, $_POST, header(), echoPSR-7 object (immutable, testable)
middlewareเขียน onion loop เอง$app->add($middleware)
error handlingset_exception_handler เองErrorMiddleware config ได้
DIส่ง dependency ผ่าน constructor เองPHP-DI autowiring

Slim ไม่ได้ทำอะไรมหัศจรรย์ — มันคือ “PHP ล้วนที่จัดระเบียบให้แล้ว ตามมาตรฐาน”

Slim เทียบกับ Hono

ถ้าเคยดูซีรีส์ Hono — Slim คือ Hono ของโลก PHP:

  • micro-framework, routing + middleware
  • แต่ Slim อยู่บน PHP (blocking, request-per-process), Hono อยู่บน JS runtime (async, edge)
  • Slim ยึด PSR, Hono ยึด Web Standards (Request/Response ของ browser)

ecosystem

  • slim/psr7 — PSR-7 implementation ทางการของ Slim (มี nyholm/psr7, guzzlehttp/psr7 เป็นทางเลือก)
  • php-di/php-di — DI container ที่นิยมใช้กับ Slim
  • slim/twig-view — Twig integration
  • slim/flash — flash message
  • tuupola/slim-jwt-auth, tuupola/cors-middleware — middleware ยอดนิยม
  • firebase/php-jwt, monolog/monolog, respect/validation — ใช้ร่วมได้ทุกตัว

เรื่องที่คนมักพลาด

  • คาดหวังว่า Slim มี ORM / auth / mail มาให้ — ไม่มี ต้อง composer require เอง
  • คิดว่า micro = ทำได้น้อย — ทำได้ทุกอย่าง แค่ประกอบเอง (Slim + Eloquent + Twig + JWT = แอปเต็มรูปแบบ)
  • เริ่ม Slim โดยไม่แน่น PHP OOP / Composer / PSR — จะงงกับ container, PSR-7, middleware
  • เลือก Slim สำหรับโปรเจกต์ที่จะโตเป็นแอปใหญ่มาก — พอถึงจุดหนึ่งจะต้องเขียนของที่ Laravel มีให้อยู่แล้วเยอะ
  • สับสน Slim 3 กับ Slim 4 — คนละเรื่อง! Slim 3 ใช้ container ผูกแน่น ($this->get() ใน route), Slim 4 ใช้ PSR-7/PSR-15/PSR-11 เต็มตัว บทความ Slim 3 ใช้กับ Slim 4 ไม่ได้

สรุป

  • Slim = PHP micro-framework ที่ให้แค่ routing + middleware + DI container บน PSR-7 / PSR-15 / PSR-11
  • ไม่มี ORM / template / CLI / auth มาให้ — composer require เอาเอง (นั่นคือจุดขาย: เบา, ควบคุมได้)
  • เหมาะกับ REST API, microservices, webhook, backend ของ SPA/mobile
  • ไม่เหมาะกับเว็บแอปใหญ่ที่ต้องการทุกอย่าง (ใช้ Laravel)
  • ต้องแน่น PHP OOP + Composer + PSR ก่อน; ระวัง Slim 3 กับ Slim 4 ต่างกันมาก

บทถัดไปเราจะติดตั้ง Slim 4 ด้วย Composer วางโครง public/index.php และรันด้วยเซิร์ฟเวอร์ในตัวของ PHP