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(), echo | PSR-7 object (immutable, testable) |
| middleware | เขียน onion loop เอง | $app->add($middleware) |
| error handling | set_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 ที่นิยมใช้กับ Slimslim/twig-view— Twig integrationslim/flash— flash messagetuupola/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