Zend Framework (এখন Laminas) এর Zend Router হল একটি গুরুত্বপূর্ণ অংশ যা ওয়েব অ্যাপ্লিকেশন এবং ইউজারের রিকোয়েস্টের মধ্যে সেতুবন্ধন তৈরি করে। এটি রিকোয়েস্ট ইউআরএল (URL) কে কন্ট্রোলার এবং অ্যাকশনে রিডাইরেক্ট করার দায়িত্ব পালন করে। এটি ওয়েব অ্যাপ্লিকেশনকে রাউটিং লজিক (URL রিকোয়েস্ট কিভাবে প্রোসেস হবে) কাস্টমাইজ করার সুযোগ দেয়।
Zend Router এর সাহায্যে আপনি বিভিন্ন রিকোয়েস্ট পাথ এবং প্যারামিটার অনুযায়ী কন্ট্রোলার এবং অ্যাকশন কল করতে পারেন।
Zend Router এর কাজ
Zend Router এর প্রধান কাজ হলো ইউজারের রিকোয়েস্টের ইউআরএল (URL) কে অ্যাপ্লিকেশনের নির্দিষ্ট কন্ট্রোলার এবং অ্যাকশনের সাথে মেলানো। এটি বিভিন্ন রাউটিং টেকনিক এবং প্যাটার্ন অনুসরণ করে যাতে অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও ফ্লেক্সিবল হয়। রাউটারটি মূলত ইউআরএল পাথ অনুযায়ী রিকোয়েস্ট প্রসেস করে এবং সেটি কন্ট্রোলার এবং অ্যাকশনে প্রেরণ করে।
Zend Router বিভিন্ন ধরনের রাউটিং কৌশল ব্যবহার করতে পারে, যেমন Literal Routes, Segment Routes, এবং Wildcard Routes।
Zend Router এর প্রধান উপাদানসমূহ
Zend Router কয়েকটি মূল উপাদান দিয়ে কাজ করে:
- Route: রাউট হচ্ছে একটি প্যাটার্ন যা একটি নির্দিষ্ট ইউআরএল পাথের জন্য কন্ট্রোলার এবং অ্যাকশন নির্ধারণ করে। উদাহরণস্বরূপ, একটি রাউট
/product/listইউআরএল কন্ট্রোলারProductControllerএরlistActionঅ্যাকশনে রিডাইরেক্ট করতে পারে। - RouteMatch: এটি হলো রাউটার দ্বারা একটি রিকোয়েস্ট পাথের সাথে মেলানো রাউটের ম্যাচ। অর্থাৎ, এটি রিকোয়েস্ট ইউআরএল পাথ এবং রাউটের প্যাটার্নের মধ্যে মিল খুঁজে বের করে।
- Router: এটি মূল রাউটিং সিস্টেম, যা ইউআরএল এবং রাউটের মধ্যে সম্পর্ক স্থাপন করে এবং সঠিক কন্ট্রোলার এবং অ্যাকশনটি কল করে।
Zend Router এর ধরণ
Zend Framework এ বেশ কিছু রাউটিং ধরন রয়েছে, যেমন:
Literal Route: Literal Route হল একটি নির্দিষ্ট ইউআরএল পাথের জন্য রাউট, যা অন্য কোনো পরিবর্তন বা প্যারামিটার গ্রহণ করে না। এটি একটি স্থির রিকোয়েস্ট ইউআরএল পাথ ব্যবহার করে, যেমন
/home,/product, ইত্যাদি।উদাহরণ:
'router' => [ 'routes' => [ 'home' => [ 'type' => 'Literal', 'options' => [ 'route' => '/home', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'index', ], ], ], ], ]এখানে
/homeইউআরএল পাথটিApplication\Controller\IndexControllerএরindexActionঅ্যাকশনে রিডাইরেক্ট হবে।Segment Route: Segment Route হল একটি ইউআরএল প্যাটার্ন যা ডাইনামিক সেগমেন্ট (প্রকৃত পাথের অংশ) গ্রহণ করতে পারে। উদাহরণস্বরূপ,
/product/:idযেখানে:idএকটি ডাইনামিক প্যারামিটার।উদাহরণ:
'router' => [ 'routes' => [ 'product' => [ 'type' => 'Segment', 'options' => [ 'route' => '/product/:id', 'defaults' => [ 'controller' => 'Product\Controller\Product', 'action' => 'view', ], ], ], ], ]এখানে
/product/123ইউআরএল পাথটিProduct\Controller\ProductControllerএরviewActionঅ্যাকশনে রিডাইরেক্ট হবে এবং:idপ্যারামিটার123ভ্যালু পাঠাবে।Wildcard Route: Wildcard Route হল এমন একটি রাউট যেখানে
*চিহ্নের মাধ্যমে একটি ইউআরএল পাথের অংশ ধরে রাখা হয়। এটি সাধারণত রাউটিং প্যাটার্নে যেকোনো পাথ গ্রহণ করতে ব্যবহৃত হয়।উদাহরণ:
'router' => [ 'routes' => [ 'wildcard' => [ 'type' => 'Wildcard', 'options' => [ 'route' => '/wildcard/*', 'defaults' => [ 'controller' => 'Application\Controller\Wildcard', 'action' => 'index', ], ], ], ], ]এই রাউটে
/wildcard/anything/elseইউআরএল পাথটিApplication\Controller\WildcardControllerএরindexActionঅ্যাকশনে রিডাইরেক্ট হবে এবংanything/elseঅংশটি একটি প্যারামিটার হিসেবে গণনা করা হবে।Regex Route: Regex Route হল একটি রাউটিং প্যাটার্ন যা রেগুলার এক্সপ্রেশন ব্যবহার করে ইউআরএল পাথ মেলাতে সাহায্য করে। এটি আরও শক্তিশালী এবং কাস্টম রাউটিং প্যাটার্ন তৈরির জন্য ব্যবহার করা হয়।
উদাহরণ:
'router' => [ 'routes' => [ 'regex' => [ 'type' => 'Regex', 'options' => [ 'route' => '#^/product/(\d+)$#', 'defaults' => [ 'controller' => 'Product\Controller\Product', 'action' => 'view', ], ], ], ], ]এখানে
/product/123ইউআরএল পাথটি রেগুলার এক্সপ্রেশন প্যাটার্নের সাথে মেলে এবংProduct\Controller\ProductControllerএরviewActionঅ্যাকশনে রিডাইরেক্ট হবে।
Zend Router কনফিগারেশন
Zend Framework এ রাউটার কনফিগার করা হয় module.config.php বা application.config.php ফাইলে, যেখানে রাউটিং প্যাটার্ন, কন্ট্রোলার এবং অ্যাকশন নির্ধারণ করা হয়।
উদাহরণ:
return [
'router' => [
'routes' => [
'home' => [
'type' => 'Literal',
'options' => [
'route' => '/home',
'defaults' => [
'controller' => 'Application\Controller\Index',
'action' => 'index',
],
],
],
'product' => [
'type' => 'Segment',
'options' => [
'route' => '/product/:id',
'defaults' => [
'controller' => 'Product\Controller\Product',
'action' => 'view',
],
],
],
],
],
];
এখানে /home এবং /product/:id রাউটগুলি দুইটি আলাদা রাউটিং প্যাটার্নের উদাহরণ।
সারাংশ
Zend Router হল একটি অত্যন্ত শক্তিশালী টুল যা ওয়েব অ্যাপ্লিকেশনে ইউআরএল রাউটিং লজিক পরিচালনা করে। এটি ইউজারের রিকোয়েস্ট ইউআরএল এর ভিত্তিতে কন্ট্রোলার এবং অ্যাকশন নির্ধারণ করে। Zend Framework এ বিভিন্ন রাউটিং প্যাটার্ন যেমন Literal Routes, Segment Routes, Wildcard Routes, এবং Regex Routes ব্যবহার করা যেতে পারে, যা অ্যাপ্লিকেশনের রাউটিং প্রক্রিয়াকে আরও ফ্লেক্সিবল এবং কাস্টমাইজযোগ্য করে তোলে।
Read more