FuelPHP একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচারের উপর ভিত্তি করে কাজ করে এবং এর মধ্যে একটি কার্যকরী Routing সিস্টেম রয়েছে। Routing FuelPHP-তে URL প্যাটার্নের সঙ্গে কন্ট্রোলার এবং অ্যাকশন ম্যাপিং করতে ব্যবহৃত হয়।
এখানে FuelPHP এর Routing সিস্টেম এবং Routes কনফিগার করা ও কাস্টম Routing কিভাবে করা হয় তা বিস্তারিতভাবে আলোচনা করা হলো।
1. FuelPHP Routing সিস্টেমের ধারণা
FuelPHP এর রাউটিং সিস্টেম URL গুলিকে কন্ট্রোলার এবং অ্যাকশনে ম্যাপ করে এবং এর মধ্যে কিছু গুরুত্বপূর্ণ বিষয় রয়েছে:
- URI Matching: FuelPHP রাউটার URL প্যাটার্নের সঙ্গে মিলিয়ে কন্ট্রোলার ও অ্যাকশন নির্বাচন করে।
- Dynamic Routing: FuelPHP ডাইনামিক রাউটিং সিস্টেমের মাধ্যমে প্যারামিটার পাস করতে সাহায্য করে।
- Named Routes: আপনি নির্দিষ্ট রাউটের জন্য নাম সেট করতে পারেন, যাতে URL তৈরি ও প্যারামিটার পাস করা সহজ হয়।
2. Routes কনফিগার করা:
FuelPHP-তে রাউটিং কনফিগারেশন app/config/routes.php ফাইলে করা হয়। এখানে আপনি URL প্যাটার্নের সঙ্গে কন্ট্রোলার এবং অ্যাকশন ম্যাপিং করতে পারবেন।
Basic Route Configuration Example:
// app/config/routes.php
return array(
'_root_' => 'welcome/index', // Default route
'about' => 'pages/about', // 'about' page route
'contact' => 'pages/contact', // 'contact' page route
);
এখানে:
_root_এর মাধ্যমে ডিফল্ট রুটwelcome/indexকে নির্দেশ করা হয়েছে, যা FuelPHP অ্যাপ্লিকেশনের হোম পেজ।aboutURL রুটটিpages/aboutকন্ট্রোলারে ম্যাপ করা হয়েছে।
Dynamic Routing Example:
FuelPHP ডাইনামিক রাউটিং সিস্টেমের মাধ্যমে আপনি URL প্যারামিটার পাস করতে পারেন।
// app/config/routes.php
return array(
'product/(:any)' => 'product/view/$1', // Dynamic route for product
);
এখানে:
(:any)এর মাধ্যমে প্যারামিটার গ্রহণ করা হয়েছে যাproduct/viewকন্ট্রোলারে$1প্যারামিটার হিসেবে পাস করা হবে।
যদি আপনি URL /product/123 ব্রাউজ করেন, তবে এটি product/view/123 অ্যাকশনকে কল করবে।
3. কাস্টম Routing (Custom Routing):
কাস্টম রাউটিং ব্যবহার করে আপনি FuelPHP-তে বিশেষ ধরনের রাউটিং কনফিগার করতে পারেন যা নির্দিষ্ট কার্যকরী URL প্যাটার্ন অনুযায়ী কন্ট্রোলার এবং অ্যাকশন কার্যকর করবে।
Named Routes (নামকৃত রুট):
কাস্টম রাউটিংয়ে আপনি নির্দিষ্ট রুটের জন্য নাম সেট করতে পারেন, যাতে আপনি ওই রাউটের জন্য URL তৈরি করতে পারেন।
// app/config/routes.php
return array(
'product/(:any)' => array('name' => 'product_view', 'route' => 'product/view/$1'),
);
এখানে:
product_viewনামে একটি রুট তৈরি করা হয়েছে, যাproduct/view/$1অ্যাকশনের সঙ্গে ম্যাপ করা হয়েছে।- আপনি এই রুটের জন্য URL তৈরি করতে
Uri::create('product_view', array('id' => '123'))ব্যবহার করতে পারেন।
Regular Expression Routing (Regex Routing):
FuelPHP রাউটিং সিস্টেমে আপনি Regular Expressions ব্যবহার করে URL প্যাটার্ন নির্ধারণ করতে পারেন।
// app/config/routes.php
return array(
'user/(:num)' => 'user/profile/$1', // Match only numeric user ID
'page/(:alpha)' => 'page/view/$1', // Match only alphabetic page slug
);
এখানে:
(:num)কেবলমাত্র সংখ্যা (numeric) প্যারামিটার গ্রহণ করবে এবং এটিuser/profile/$1অ্যাকশনে পাস হবে।(:alpha)কেবলমাত্র অক্ষর (alphabetic) প্যারামিটার গ্রহণ করবে এবং এটিpage/view/$1অ্যাকশনে পাস হবে।
Wildcard Routing:
Wildcard routing ব্যবহার করে আপনি URL parameters গ্রহণ করতে পারেন, যাতে একটি URL বিভিন্ন কন্ট্রোলার অ্যাকশন দ্বারা পরিচালিত হতে পারে।
// app/config/routes.php
return array(
'news/(:any)/(:num)' => 'news/view/$1/$2', // Matches two parameters
);
এখানে:
(:any)এবং(:num)ব্যবহার করা হয়েছে, যা যে কোন স্ট্রিং বা সংখ্যা গ্রহণ করবে এবং$1,$2প্যারামিটার হিসেবে কন্ট্রোলার অ্যাকশনে পাস করবে।
4. Controller and Action Mapping:
FuelPHP-তে রাউটিং কনফিগারেশনের মাধ্যমে URL প্যাটার্নের সঙ্গে কন্ট্রোলার এবং অ্যাকশন ম্যাপ করা হয়।
Controller Action Example:
// app/classes/controller/news.php
class Controller_News extends Controller {
public function action_view($slug, $id) {
return Response::forge(View::forge('news/view', array('slug' => $slug, 'id' => $id)));
}
}
এখানে:
Controller_Newsকন্ট্রোলারেaction_viewঅ্যাকশন তৈরি করা হয়েছে যা দুইটি প্যারামিটার গ্রহণ করবে,$slugএবং$id।- এই অ্যাকশনটি ভিউ ফাইল
news/viewকে প্যারামিটার হিসেবে পাস করবে।
Accessing Routes:
রাউটের URL গুলো কিভাবে অ্যাক্সেস করা হয়, তা FuelPHP তে বিভিন্ন পদ্ধতিতে করা যায়।
// Using Uri::create() to generate URLs dynamically
echo Uri::create('product_view', array('id' => 123)); // Outputs: /product/123
এখানে:
- Uri::create() ব্যবহার করে আপনি product_view নামে নামকৃত রুটের জন্য ডাইনামিক URL তৈরি করতে পারবেন।
5. Advanced Routing Example (Query Parameters and HTTP Methods):
FuelPHP রাউটিং সিস্টেম আরও শক্তিশালী পদ্ধতিতে URL প্যাটার্ন এবং HTTP মেথড সাপোর্ট করে। যেমন আপনি GET, POST, PUT, DELETE HTTP মেথডের ভিত্তিতে রাউটিং কনফিগার করতে পারেন।
// app/config/routes.php
return array(
'profile/(:any)' => array('route' => 'user/profile/$1', 'method' => 'GET'),
'profile/update' => array('route' => 'user/update', 'method' => 'POST'),
);
এখানে:
profile/(:any)রুটটি GET HTTP মেথডের জন্য কন্ট্রোলার অ্যাকশনটি কল করবে।profile/updateরুটটি POST HTTP মেথডের জন্যuser/updateঅ্যাকশনকে কল করবে।
সারাংশ:
- FuelPHP-এর রাউটিং সিস্টেম URL প্যাটার্ন থেকে কন্ট্রোলার এবং অ্যাকশন ম্যাপিং করার জন্য ব্যবহৃত হয়।
- Routes কনফিগার করা এবং কাস্টম Routing করতে FuelPHP-এ বিভিন্ন ফিচার আছে যেমন Dynamic Routing, Regex Routing, Named Routes, এবং HTTP Methods Routing।
- FuelPHP তে রাউটিং কনফিগারেশন সম্পাদন করার জন্য app/config/routes.php ফাইলটি ব্যবহার করা হয়।