کتابخانه ی Klein.php یک روتر سریع و انعطاف پذیر برای نسخه های php5.3 به بالا میباشد.
روتر:
اگر روتر را بخواهیم از نظر لغوی معنا کنیم می توانیم به آن مسیر یاب بگوییم. روتر ها یا مسیر یاب ها تجهیزات فیزیکی هستند که چندین شبکه بی سیم یا کابلی را به یکدیگر متصل می کنند.
در واقع کتابخانه ی Klein.php کار روتر یا مسیر یاب را انجام میدهد.این کتابخانه سبک برای مسیر یابی های درون پروژه مورد استفاده قرار میگیرد و از دستورات مسیر یابی کتابخانه ی Dispatch الگو گرفته است اما با کمی تغییر در کلاس ها و توابع توانسته بسیاری از نقص های کتابخانه ی Dispatch را برطرف سازد.
مسیر یابی در php
در برنامه هایی که به زبان PHP نوشته می شوند معمولا هر آدرس به یک فایل ارجاع داده میشود مثلا ادرس roocket.ir/index.php که ارجاع داده شده به یک فایل phpبه نام index . در حالت عادی اگه بخوایم یک آدرس خاص داشته باشیم باید به کمک فایل ها و فولدرهایی که میسازیم آدرس را ایجاد کنیم. مثلا اگه بخوایم سایت ما ادرسی به صورت roocket.ir /videos داشته باشه باید یک فولدر (پوشه) با نام video بسازیم و درون آن فایل ها و پرونده های php مربوط به آن را قرار بدهیم.
شما با استفاده از فایل htaccess نیز میتوانید آدرس دهی مسیر ها را تغییر دهید.اما یک راه بهتر و آسان تر نیز وجود دارد و آن استفاده از روتر است.
توضیح روش روتر در مسیر یابی php
شما میتونید همه ی درخواست هایی که به سرور ارسال می شود را به یک فایل بفرستید و به وسیله ی آن فایل درخواست ها را مدیریت نمایید.
ما یک چیزی میسازیم به نام روتر (router ) و آدرس تمامی درخواست ها را به این فایل ارسال میکنیم. سپس با استفاده از این فایل آدرس دریافت شده را تجزیه و تحلیل میکنیم و برحسب نیاز فایل php مورد نظر را اجرا میکنیم. به این روش مسیریابی به وسیله ی routerمیگویند.
تا اینجا با مفهوم روتر آشنا شدید.در واقع کتابخانه ی Klein.php با توابع و کلاس هایی که در اختیار شما قرار میدهد به شما این امکان را میدهد تا به راحتی روش روتر و مسیر یابی را با سرعت در پروژه ی خود پیاده سازی نمایید.به مثال زیر توجه کنید:
respond('/[:name]', function ($request) {
echo 'Hello ' . $request->name;
});
همچنین شما میتوانید با روش های خاص مسیر یابی های مربوط به درخواست های http را با این کتابخانه انجام دهید:
respond('GET', '/posts', $callback);
respond('POST', '/posts/create', $callback);
respond('PUT', '/posts/[i:id]', $callback);
respond('DELETE', '/posts/[i:id]', $callback);
// To match multiple request methods:
respond(array(‘POST’,’GET’), $route, $callback);
// Or you might want to handle the requests in the same place
respond(‘/posts/[create|edit:action]?/[i:id]?’, function ($request, $response) {
switch ($request->action) {
// do something
}
});
این کتابخانه سریع و سبک برای پروژه های کوچک و متوسط بسیار مناسب است اما برای پروژه های سطح بالاتر و بزرگ به خوبی نمیتواند مسیریابی کرده و به درخواست ها پاسخ بدهد و از کار می افتد.برای حل این مشکل شما میتوانید از فریم ورک های php مانند لاراول و... (این کتابخانه از اکثر فریم ورک های php پشتیبانی میکند)استفاده کنید تا کلاس های این کتابخانه با تلفیقی از کلاس ها و توابع فریم ورک ، بتواند به قدرت از پس مسیریابی و درخواست های سرور و http بر بیاید.
مزایای کتابخانه ی Klein.php:
- مسیر یابی سریع و منظم و استفاده از کلاس ها و توابع سبک و سریع:
require_once __DIR__ . '/vendor/autoload.php';
$klein = new \Klein\Klein();
$klein->respond('GET', '/hello-world', function () {
return 'Hello World!';
});
$klein->dispatch();
Example 1 - Respond to all requests
$klein->respond(function () {
return 'All the things';
});
- بهره گیری از مجموعه ی توابع و کلاس های کاربردی برای مسیریابی و پاسخ به درخواست های برنامه های وب با الگوی boilerplate
- این کتابخانه نیاز به افزونه و پیش نیاز خاصی نیست تنها نیاز به نسخه ی php5.3 به بالا است.
- پاسخ به تمام درخواست ها در پروژه های کوچک و متوسط:
$klein->respond('/[:name]', function ($request) {
return 'Hello ' . $request->name;
});
معایب کتابخانه ی Klein.php:
- به دلیل سبک بودن کتابخانه در پروژه های بزرگ توابع آن قادر به مسیر یابی و پاسخ به درخواست های سرور نمیباشند.
- در نسخه های php5.3 به پایین کارایی لازم را ندارد.
مثالی از پاسخ به درخواست ها و مسیر یابی توسط کتابخانه ی Klein.php:
$klein->respond('GET', '/posts', $callback);
$klein->respond('POST', '/posts', $callback);
$klein->respond('PUT', '/posts/[i:id]', $callback);
$klein->respond('DELETE', '/posts/[i:id]', $callback);
$klein->respond('OPTIONS', null, $callback);
// To match multiple request methods:
$klein->respond(array('POST','GET'), $route, $callback);
// Or you might want to handle the requests in the same place
$klein->respond('/posts/[create|edit:action]?/[i:id]?', function ($request, $response) {
switch ($request->action) {
//
}
});
مثالی از ارسال کلاس ها و اشیا و فایل ها در کتابخانه ی Klein.php :
$klein->respond(function ($request, $response, $service) {
$service->xml = function ($object) {
// Custom xml output function
}
$service->csv = function ($object) {
// Custom csv output function
}
});
$klein->respond('/report.[xml|csv|json:format]?', function ($request, $response, $service) {
// Get the format or fallback to JSON as the default
$send = $request->param('format', 'json');
$response->$send($report);
});
$klein->respond('/report/latest', function ($request, $response, $service) {
$response->file('/tmp/cached_report.zip');
});
نحوه ی نصب و فراخوانی کتابخانه Klein.php در پروژه :
با استفاده از composer میتوانید به روش زیر کتابخانه ی Klein.php را نصب و در پروژه های خود از آن استفاده نمایید:
- نیاز های کتابخانه ی Klein.php را با کد php composer.phar require klein/klein بیابید.
- بعد از بررسی های لازم برای بر طرف ساختن نیاز های کتابخانه ی Klein.php با استفاده از کد require 'vendor/autoload.php'; کتابخانه ی Klein.php را به پبروژه ی خود اضافه نمایید.
با استفاده از لینک زیر میتوانید فایل های کتابخانه ی Klein.php را دریافت نمایید:
https://codeload.github.com/klein/klein.php/zip/master
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید