পিএইচপি প্রোগ্রামিং · বিভাগহহীন

MVC এবং ফ্রেমওয়ার্ক সম্পর্কে কিছু কথা

ওয়ার্ক সম্পর্কে যেটা বলবো :

ফ্রেমওয়ার্ক এর উদাহরণ হিসাবে ধরা যাক, আমি একটি দশ তলা বিল্ডিং তৈরি করতে চাই। আমি ইঞ্জিনিয়ারকে দুইটি অপশন দিলাম। প্রথমত, আমি তাকে একটি প্লট দিলাম এবং বললাম দশ তলা বিল্ডিং তৈরি করতে। এবং দ্বিতীয়ত, আমি তাকে একটি স্ত্রং দশ তলা বিল্ডিং এর কাঠামো দিলাম যেখানে অলরেডি তৃতীয় তলা পর্যন্ত তৈরি করা আছে।

নিচের ছবি দুটির সাথে PHP দিয়ে একটা উদহারণ দিলে ধারণাটা আরো ক্লিয়ার হবে :

images চিত্র: ফ্রেমওয়ার্ক ছাড়া PHP

ইঞ্জিনিয়ারের জন্য কোনটি বেটার অপশন হবে? নিঃসন্দেহে দ্বিতীয়টি। যদিও প্রথমটিতে নিজের চিন্তা ও কল্পনা ব্যবহারের সম্ভবনা বেশি, কিন্ত এর সবচেয়ে বড় প্রব্লেম হচ্ছে ইঞ্জিনিয়ারকে যথেষ্ট দক্ষ হতে হবে, কেননা যদি সে শুরুতে কোন ভুল করে তাহলে সম্পূর্ণ বিল্ডিং ধসে পরতে পারে। এক্ষেত্রে দ্বিতীয় অপশনটি ভালো। আমি আগেই বলেছি, স্ত্রং কাঠামো যার যথেষ্ট এক্সটেন্টিবিলিটি ও বিশ্বাসযোগ্যতা আছে।

building-a-house-in-flat-design-with-construction-elements_23-2147561235চিত্র: ফ্রেমওয়ার্ক সহ PHP

তেমনই ওয়েব সাইটের ক্ষেত্রে ফ্রেমওয়ার্ক হচ্ছে রেডিমেড ক্লাস ও ইন্টারফেসের কালেকশন যার মাধ্যমে আমরা নির্দিষ্ট ধরনের অ্যাপ্লিকেশান ডেভেলপ করতে পারি।

ফ্রেমওয়ার্ক এর আর্কিটেকচার: মডেল-ভিউ-কন্ট্রোলার (MVC):

মডেল-ভিউ-কন্ট্রোলার(MVC) একটি পরিচিত সফটওয়্যার আর্কিটেকচার। সফটওয়্যার/ওয়েব অ্যাপ ডেভেলপমেন্টে (MVC) আর্কিটেকচার ব্যবহার করে অনেক সুবিধা পাওয়া সম্ভব।

MVC তে আমরা আমাদের ডেভেলপমেন্টকে ৩টি ভাগে ভাগ করবো,মডেল,ভিউ এবং কনট্রোলার। আমরা ইউজার ইন্টারফেসের কোড এবং অন্যান্য কোড যেমন বিভিন্ন ফাংশন,ডাটাবেস কুয়েরি পুরোপুরি আলাদা করে ফেলবো যাতে প্রতিটি অংশ নিয়ে আলাদা ভাবে কাজ করা যায় অন্য কোনো অংশের উপর প্রভাব না ফেলে।

ভিউ: এ অংশের কোডে থাকবে শুধুমাত্র ইউজার ইন্টারফেসের কোড,অন্য কোনো কিছু না। যেমন: ওয়েব ডেভেলপিং এর ক্ষেত্রে MVC আর্কিটেকচারের ভিউ অংশে থাকবে শুধুমাত্র HTML/XHTML কোড, ফ্ল্যাশ অ্যানিমেশন । অবশ্যই একটি মডেলের জন্য একাধিক ভিউ ফাইল থাকতে পারে কিন্তু লজিকাল কোনো ব্যাপার ভিউতে থাকবেনা।

মডেল: এ অংশে থাকবে আপনার সমস্ত ফাংশন,ডাটাবেস কুয়েরি ইত্যাদি। এখানে ডিসপ্লের কোনো প্রকার কাজ হবেনা,আপনাকে কিছু ভ্যারিয়েবল প্যারামিটার হিসাবে পাঠানো হতে পারে,নাও পারে,আপনি ফাংশনে আপনার প্রয়োজনীয় কাজ করে কনট্রোলারকে রিটার্ন করবেন। মডেল যে ডাটা রিটার্ণ করে সেগুলো “display-neutral”, অর্থাত কোনো ডিসপ্লে ফরমেটিং থাকেনা সেগুলোতো।

কন্ট্রোলার: কন্ট্রোলার মডেল আর ভিউ অংশের সমন্বয় করে। সকল ইউজার ইনপুট কন্ট্রোলারের কাছে যায়,কন্ট্রোলার ইনপুট পাবার পর প্যারামিটার হিসাবে পাঠিয়ে দেয় মডেলের কাছে,মডেল সেটাকে প্রসেস করে কিছু ডাটা রিটার্ণ করে,এবার সেই ডাটাকে কন্ট্রোলার আবার পাঠিয়ে দেয় ভিউ এর কাছে। ভিউ তখন ডাটা গুলো প্রদর্শন করে।

তাহলে ইউজার যা দেখছে সেটা ভিউ,ইউজারের ইনপুট গ্রহণ করছে কন্ট্রোলার,সে ইনপুট মডেলে পাঠিয়ে প্রসেস করছে,পরে প্রসেস করা ডাটা আবার ভিউতে পাঠিয়ে ইউজারকে প্রদর্শন করছে।

আমরা যখন সাধারণ ভাবে একটি জাভা কোড লিখি আমরা ডাটা প্রসেসিং অংশ,গ্রাফিক্সের অংশ একসাথে রেখে দেই। এতে আমাদের যখন খালি গ্রাফিক্স নিয়ে কাজ করতে হয় তখন অন্যান্য কোডও আমাদের দেখতে হয়। কিন্তু MVC তে আমার জানাও দরকার নেই অন্যান্য কাজ কিভাবে হচ্ছে,আমার গ্রাফিক্সের অংশের কোড নিয়েই শুধু কাজ করতে পারি। একই ভাবে যে ডাটাবেস অংশ করবে সে শুধুমাত্র মডেল নিয়ে কাজ করতে পারে। চাইলে মডেলকেও কয়েক ভাগে ভাগ করে নেয়া যায়,এক অংশে হয়তো থাকবে অ্যালগোরিদম,আরেক অংশে ডাটাবেস,ফলে কাজে আরও সুবিধা হবে।

কন্ট্রোলারের কনসেপ্টটাও গুরুত্বপূর্ণ। অ্যাপ্লিকেশনের কন্ট্রোলার যার হাতে থাকবে সে একাধিক মডেল বা ভিউ হতে ইচ্ছামত নির্বাচন করতে পারবে। ধরো তুমি তোমার সাইটের ডিজাইন টেমপ্লেট পাল্টাতে চাও,তোমার HTML/XHTML আর PHP/ASP/Python কোড একসাথে থাকলে কি ঘটবে? তোমাকে নতুন টেম্প্লেটের ভিতর আবার ফাংশন গুলো বসাতে হবে যা অনেক সময়সাপেক্ষ। কিন্তু MVC তে তুমি খালি ভিউ ফাইলটা বদলে দিবে,কাজ শেষ।

একটা MVC অ্যাপ্লিকেশনে অনেকগুলো মডেল-ভিউ-কন্ট্রোলারের সমষ্টিও হতে পারে। জাভার সুইং লাইব্রেরির প্রতিটা কম্পোনেন্ট আলাদা MVC ব্যবহার করে।

তবে MVC কখন ব্যবহার করবে আর কখন করবেনা সেটাও মাথায় রাখতে হবে। ছোট ১০০ লাইনের একটা অ্যাপ্লিকেশনের জন্য MVC ব্যবহারের কোনো প্রয়োজন নেই। MVC ব্যবহার করতে বেশ পরিকল্পনার দরকার আছে যা সময়সামেক্ষ। ছোট অ্যাপ্লিকেশনে এ সময় ব্যয় করা অর্থহীন। তবে বড় প্রজেক্টের ক্ষেত্রে MVC তোমাকে বিশাল অ্যাডভান্টেজ দিবে,তুমি খুব সহজে প্রজেক্ট মেইনটেইন করতে পারবে।

MVC কিভাবে ব্যাবহার করবে? ১টি উপায় হলো নিজেই MVC আর্কিটেকচারের মূলনীতিগুলো মেনে কোডিং করা। আরো সহজ উপায় হলো ফ্রেমওয়ার্ক ব্যবহার করে। ওয়েবে খুব জনপ্রিয় একটি পিএইচপি ফ্রেমওয়ার্ক হলো কোডইগনাইটার। ফ্রেমওয়ার্ক তোমাকে মডেল-ভিউ-কন্ট্রোলার সবগুলোর জন্য আলাদা ফ্রেম তৈরি করে দিবে,তুমি শুধু ফ্রেমগুলোতে কোড লিখবে। এছাড়া বেশীভাগ ফ্রেমওয়ার্ক আরো কিছু সুবিধা দেয়। যেমন ডাটাবেসে সহজে কুয়েরির জন্য কিছু লাইব্রেরি। পাইথনের django সহ অন্যান্য কিছু ফ্রেমওয়ার্কে এমন লাইব্রেরি আছে যা স্বয়ংক্রিয় ভাবে HTML কোড জেনারেট করবে,আপনাকে খালি পাইথনের সিনট্যাক্সে কোড লিখতে হবে। জাভা,সি++ সবকিছুর জন্যই MVC ফ্রেমওয়ার্ক পাওয়া যায়। চাইলে নিজেরই একটা ফ্রেমওয়ার্ক বানিয়ে নিতে পারো :)।

মন্তব্য

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s