انجمن عمومی گسترش فناوری آگو
Slim Framework یک فریم ورک ساده و قدرتمند - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: Slim Framework یک فریم ورک ساده و قدرتمند (/showthread.php?tid=2316)



Slim Framework یک فریم ورک ساده و قدرتمند - agotd - 02-01-2014 04:06 PM

در دنیای امروزی بیشتر توسعه دهندگان و برنامه نویسان وب و مخصوصا PHP با استفاده از فریم ورک ها مشکلات موجود رو حل میکنن. گاهی این فریم ورکها با کتابخانه های زیادی که داره مثل فریم ورک زند باعث گیجی و ترس کاربر میشه. اما امروز قصد دارم فریم ورکی رو معرفی کنم که در عین سادگی از قدرت بالایی برخورداره.
امکانات Slim Framework

HTTP routing
Named routes
Route passing
Route redirects
Route halting
Middleware & Hooks
Custom views
HTTP caching
Signed cookies
Custom 404 page
Custom 500 page
Error handling
Logging

حجم این فریم ورک هم چیزی حدود ۲۰۰ کیلوباته.

فکر میکنم بهتره با یک مثال ساده نحوه کار این فریم ورک رو نشون بدم. این مثال رو از سایت خود Slim framework برداشتم.

ابتدا فریم ورک رو از لینک زیر دانلود کنید :

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


فایل رو اکسترکت و پوشه Slim رو در روت وب سرور قرار بدید.

یک فایل با نام index.php ایجاد کنید.

یک فایل با نام .htaccess ایجاد کنید.

محتویات زیر رو داخل فایل htaccess کپی کنید :

کد php:
RewriteEngine On

RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteRule 
index.php [QSA,L

این دستورات تمام درخواستها رو به فایل index.php ارسال میکنه.

فایل index.php رو باز کنید. اولین کاری که باید انجام بدید include کردن فایل Slim/Slim.php

سپس از کلاس Slim یک شیء ایجاد میکنیم :

کد php:
$app = new Slim(); 

حالا با استفاده از متدهای get , post , put , delete برای مدیریت درخواست های استفاده میکنیم.

کد php:
$app->get('/hello/:name', function ($name) {
    echo 
"Hello, $name";
}); 

با استفاده از دستور بالا هنگامی که کاربر آدرس http://localhost/hello/phpro.ir رو وارد کنه این متد اجرا میشه و کلمه Hello phpro.ir رو نمایش میده.

متدهای get , post , delete , put دو آرگومان ورودی میگیرند.

۱- قالب یا شکل آدرس درخواستی (URL)

2 – نام تابعی که پس از مساوی بودن آدرس درخواستی و ارگومان ورودی اول باید اجرا شه. در مثال بالا ما از توابع بی نام PHP استفاده کردیم که از ورژن ۵٫۳ به بعد قابل استفاده است. در صورتی که ورژن پایینتری استفاده میکنید میتونید نام تابع رو مستقیم بنویسید.

برای استفاده از متدهای دیگه هم به شکل زیر عمل میکنیم :

کد php:
//POST route
$app->post('/person', function () {
    
//Create new Person
});

//PUT route
$app->put('/person/:id', function ($id) {
    
//Update Person identified by $id
});

//DELETE route
$app->delete('/person/:id', function ($id) {
    
//Delete Person identified by $id
}); 

در انتها برای اجرای برنامه از دستور زیر استفاده میکنیم :

کد php:
$app->run() 

در نهایت محتویات فایل index.php به این صورته :

کد php:
require 'Slim/Slim.php';

//With default settings
$app = new Slim();


//GET route
$app->get('/hello/:name', function ($name) {
    echo 
"Hello, $name";
});

//POST route
$app->post('/person', function () {
    
//Create new Person
});

//PUT route
$app->put('/person/:id', function ($id) {
    
//Update Person identified by $id
});

//DELETE route
$app->delete('/person/:id', function ($id) {
    
//Delete Person identified by $id
});

$app->run(); 

از مزایای این فریم ورک میشه به سازگاری با موتور قالب twig اشاره کرد. همچنین با کلاسهای Paris و Idiorm برای ارتباط با دیتابیس به خوبی هماهنگ میشه.

هدف اصلی من از معرفی چنین فریم ورکی این بود که با دید بازتری به برنامه نویسی نگاه کنیم و فریم ورک رو فقط معماری سه لایه ندونیم. شاید این فریم ورک هم به نوعی سه لایه تلقی بشه اما شیوه پیاده سازی و سادگی اون واقعا قابل تقدیره.بازدید : ۵۶۵