📌 ساخت یک REST API سبک با PHP خالص
خیلی وقتها برای یک فرم ساده، اپ موبایل کوچک یا integration داخلی، لازم نیست کل Laravel را بالا بیاریم. یک API سبک با PHP خالص میتونه هم سریع باشه، هم قابل دیپلوی روی هر هاستی.
در این پست، یه نمونه خیلی عملی میبینیم که شبیه مثالهای سرور داخلی PHP در مستندات رسمی کار میکنه؛ فقط کمی مرتبتر و مدرنتر 👇
💡 ایده اصلی
– استفاده از PHP 8+ با
– هندلکردن
– استفاده از
– جداسازی لاجیک در یک کلاس کوچک (بدون شلوغکاری).
🔧 ساختار پیشنهادی
– یک فایل
– یک کلاس ساده برای مدیریت دادهها (فعلاً in-memory، بعداً راحت میشه به DB وصل کرد)
🚀 اجرا روی لوکال
با سرور داخلی PHP (مطابق داکیومنت رسمی):
حالا:
– با
– بعداً خیلی راحت میشه این ساختار رو به یک لایه Repository و اتصال به MySQL یا PostgreSQL گسترش داد.
🔥 چند نکته کاربردی
– همیشه
– برای پروژه واقعی، لاگگرفتن و error handling مرکزی (مثلاً با یک middleware ساده) خیلی کمک میکنه.
– اگر این سبک رو دوست داشتی، نگاهکردن به سورس micro-frameworkهایی مثل Slim PHP ایدههای خوبی برای routing و middleware میده.
امروز همین نمونه کوچک رو روی سیستم خودت بالا بیار، کمی باهاش بازی کن و بعد شروع کن به اضافهکردن featureهای کوچیک 😉
🔖 #PHP #پی_اچ_پی #PHP #REST_API #Backend #Web #Tutorial
👤 Developix
💎 Channel: @DevelopixPHP
خیلی وقتها برای یک فرم ساده، اپ موبایل کوچک یا integration داخلی، لازم نیست کل Laravel را بالا بیاریم. یک API سبک با PHP خالص میتونه هم سریع باشه، هم قابل دیپلوی روی هر هاستی.
در این پست، یه نمونه خیلی عملی میبینیم که شبیه مثالهای سرور داخلی PHP در مستندات رسمی کار میکنه؛ فقط کمی مرتبتر و مدرنتر 👇
💡 ایده اصلی
– استفاده از PHP 8+ با
type hint و strict_types.– هندلکردن
GET /tasks و POST /tasks برای یک TODO ساده.– استفاده از
json_encode / json_decode با application/json.– جداسازی لاجیک در یک کلاس کوچک (بدون شلوغکاری).
🔧 ساختار پیشنهادی
– یک فایل
public/index.php– یک کلاس ساده برای مدیریت دادهها (فعلاً in-memory، بعداً راحت میشه به DB وصل کرد)
<?php
declare(strict_types=1);
// public/index.php
header('Content-Type: application/json; charset=utf-8');
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
$uri = strtok($_SERVER['REQUEST_URI'] ?? '/', '?');
class TaskStore
{
private array $tasks = [];
public function all(): array
{
return array_values($this->tasks);
}
public function add(string $title): array
{
$id = uniqid('task_', true);
$task = [
'id' => $id,
'title' => $title,
];
$this->tasks[$id] = $task;
return $task;
}
}
$store = new TaskStore();
if ($uri === '/tasks' && $method === 'GET') {
echo json_encode($store->all(), JSON_UNESCAPED_UNICODE);
exit;
}
if ($uri === '/tasks' && $method === 'POST') {
$input = json_decode(file_get_contents('php://input'), true) ?? [];
if (!isset($input['title']) || !is_string($input['title'])) {
http_response_code(422);
echo json_encode(['error' => 'title is required']);
exit;
}
$task = $store->add(trim($input['title']));
http_response_code(201);
echo json_encode($task, JSON_UNESCAPED_UNICODE);
exit;
}
http_response_code(404);
echo json_encode(['error' => 'Not Found']);
🚀 اجرا روی لوکال
با سرور داخلی PHP (مطابق داکیومنت رسمی):
php -S localhost:8000 -t public
حالا:
– با
curl یا Postman روی /tasks تست کن.– بعداً خیلی راحت میشه این ساختار رو به یک لایه Repository و اتصال به MySQL یا PostgreSQL گسترش داد.
🔥 چند نکته کاربردی
– همیشه
Content-Type درست برای JSON ست کن تا client ها راحتتر parse کنن.– برای پروژه واقعی، لاگگرفتن و error handling مرکزی (مثلاً با یک middleware ساده) خیلی کمک میکنه.
– اگر این سبک رو دوست داشتی، نگاهکردن به سورس micro-frameworkهایی مثل Slim PHP ایدههای خوبی برای routing و middleware میده.
امروز همین نمونه کوچک رو روی سیستم خودت بالا بیار، کمی باهاش بازی کن و بعد شروع کن به اضافهکردن featureهای کوچیک 😉
🔖 #PHP #پی_اچ_پی #PHP #REST_API #Backend #Web #Tutorial
👤 Developix
💎 Channel: @DevelopixPHP
❤1