কোডইগনিটার – CodeIgniter চেইন টিউন [পর্ব-০৪] :: MVC – Model View Controller কী এবং কিভাবে কাজ করে

প্রথম কথা:

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

MVC কি:

MVC এর Full Meaning হল Model View Controller. এটি কোন এ্যাপ্লিকেশনের কাজ করার একটি পদ্ধতি মাত্র।
ধরুন আপনার এই মুহূর্তে টাকা দরকার। আপনি টাকাটি আপনার মায়ের কাছে চাইলেন আর মা টাকাটি আপনার বাবার কাছে চাইল, বাবা টাকাটি তার ক্যাশ বাক্স থেকে তুলে আপনার মায়ের কাছে দিল এবং মা সেই টাকা আবার আপনার হাতে দিল। সহজভাবে চিন্তা করলে MVC মূলত এই পদ্ধতিতেই কাজ করে। MVC বেজড এ্যাপ্লিকেশনে তিনটি প্রধান পার্ট থাকে। Model, Controller এবং View.

Model: ডাটাবেজ নিয়ে কাজ করে। ডাটাবেজে ডাটা ইনসার্ট করে, ডিলিট করে, আপডেট করে এবং ডাটাবেজ থেকে ডাটা তুলে আনে। এটি একটি ক্লাশ। ক্লাশ অর্থ হল অনেকগুলো ফাংশনের সমষ্টি। এখানে প্রত্যেকটি অপারেশনের(ইনসার্ট, আপডেট, ডিলিট, রিট্রিভ) জন্য বিভিন্ন ফাংশন লেখা হয়। ফাংশনগুলো প্রয়োজনমত Controller থেকে কল করা হয়। এটি আপনার বাবার ভূমিকা পালন করছে।
Controller: এটির নাম যেমন Controller তেমনি এটি কন্ট্রোলিং এর ভূমিকা পালন করে। View এবং Model কে নিয়ন্ত্রন করাই এর কাজ। এটিও একটি ক্লাশ যা অনেক গুলো ফাংশনের সমষ্টি। কোন ভিউ কখন প্রদর্শিত হবে, কিভাবে প্রদর্শিত হবে, প্রদর্শিত হবার সময় তার কাছে কি কি ডাটা যাবে, সেই ডাটাগুলো Model এর কোন ফাংশন প্রদান করবে অর্থাত View কে ডাটা দেবার জন্য কোন ফাংশনকে কল করা হবে, সবকিছুই করে থাকে Controller. উদাহরণের মা হল এই Controller.
View: এটি মূলত Interface যা ব্রাউজার আপনার সামনে প্রদর্শন করে। এখানে User কে কোন ফর্ম দেয়া হল যাতে সে ইনপুট দিতে পারে যা ডাটাবেজে সংরক্ষিত হবে(যেমন: আপনি কোন ওয়েব সাইটে রেজিষ্ট্রেশন করছেন), বা User কে কোন লিংক দেয়া হল যেখানে ক্লিক করলে সে রেজিস্ট্রেশন এর সময় যে তথ্যগুলো দিয়েছিল সব দেখতে পারবে। উদাহরণে এটি হচ্ছেন আপনি।

MVC কিভাবে কাজ করে:

MVC খুবই গোছানো অর্ডারড একটি পদ্ধতি কাজ করে।
কাজের Flow টা এরকম: View->Controller->Model
অথবা এরকম: Model->Controller->View
ধরুন ব্রাউজারে আপনি একটি পেজ খুলে আছেন। পেজে একটি লিংক প্রদর্শিত হচ্ছে যেখানে ক্লিক করলে আপনি আপনার সকল তথ্য বা প্রোফাইল দেখতে পাবেন। লিংকে ক্লিক করলে যা ঘটবে:
আপনি ছিলেন View তে। View এর লিংকের href এ Controller এর একটি ফাংশনকে উল্লেখ করা আছে। আপনি যখনই ঐ লিংকে ক্লিক করবেন তখন Flow চলে যাবে কন্ট্রোলারের ঐ নির্দিষ্ট ফাংশনে। সেখানে Model এর একটি ফাংশনকে কল করা আছে যে ফাংশনটি ডাটাবেজ থেকে সব ডাটা তুলে আনবে। Flow চলে যাবে Model এর সেই ফাংশনে। ফাংশনটি ডাটাবেজ থেকে সব ডাটা তুলে আনবে এবং Flow আবার চলে আসবে কন্ট্রোলার এর সেই ফাংশনে। এখানে আবার ভিউ এর একটি পেজকে কল করা আছে। কন্ট্রোলার সেই পেজ এ ডাটাগুলোকে পাঠিয়ে দেবে। এবং ভিউ নিজের মত করে ডাটাগুলোকে প্রদর্শন করবে।
এখানে যে প্রসেসটি হল তাকে গ্রাফিক্যালি প্রদর্শন করলে এরকম দেখাবে:

আমাদের চেইন টিউনের আলোচ্য বিষয় কোডইগনিটার মূলত MVC প্যাটার্নেই কাজ করে থাকে। কোডইগনিটারে অন্যান্য কনফিগারেশন এবং সিস্টেম ফাইলের সাথে থাকে  Model, View এবং Controller. এবং এই তিনটির মাধ্যমে সে MVC প্যাটার্ন ফলো করে কাজ করে। সুতরাং কোডইগনিটার শিখতে চাইলে প্রথম শর্ত হল MVC এর এই সহজ ফ্লোটি বুঝতে হবে।

আজকে আপাতত এই পর্যন্তই, আগামী পর্বে আমরা কোগইগনিটারে কিভাবে MVC কাজ করে তা হাতে কলমে দেখব।
পুনশ্চ: বিগত পোষ্টে আপনাদের তেমন উতসাহব্যঞ্জক সাড়া পাই নি। যদি চান টিউনটি নিয়মিত হোক তাহলে মন্তব্য করে উতসাহিত করাটাও আপনাদেরই দায়িত্ব।

Level 0

আমি নাজমুল হাসান নিরো। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 3 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 6 টি টিউন ও 64 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

ব্রাদার, এটা মনে হয় চার তম পর্ব।

Level 0

নাজমুল হাসান নিরো ভাই খুব ব্যস্ত নাকি। আপনার পোস্ট দিতে এত দেরি হয় কেন। চরম পোস্ট হইসে। রেগুলার পর্ব গুলো পোস্ট করুন আমরা আপনার সাথে আছি।

    @hossain77: ব্যস্ততা একটু বেশিই আর কী। মাঝখানে পারিবারিক একটু ঝামেলার মধ্যে ছিলাম। এখন খুব একটু অনিয়ম হবে না আশা করা যায়। উতসাহের জন্য ধন্যবাদ।

Level 0

মানুষ আপনার পোস্ট পরে উপকার পাচ্ছে ঠিকই, কিন্তু কারও একটা কমেন্ট করার সময় নাই। ভাবতে কষ্ট হয়।

Level 0

Really Great………………….. Please don’t stop.

Level New

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

Level 0

গত কালকেই আপনার পোস্ট পড়েছিলাম কিন্তু কমেন্ট দিতে একটু দেরি হয়ে গেল। বস অনেক সুন্দর হচ্ছে, আশা করছি আপনি continue করলে অনেক কিছু শিখতে পারবো।
সুস্থ থাকুন।

আপনার পোস্টের দৈর্ঘ্য আরেকটু বড় হলে ভাল হয়। কারন পুরো ৪ টা পোস্ট ২০ মিনিটে পড়ে শেষ।

আপনার কোডইগনাইটারে কাজ করা আছে এমন কয়েকটা এপ্লিকেশনের সোর্সকোড দিতে পারবেন? অথবা গিটহাব এড্রেস?

    @Mashpy Says: কোন টার্ম বুঝতে ঠিক যতটুকু বলার প্রয়োজন ঠিক ততটুকুই বলাটা বুদ্ধিমানের কাজ। অযথা কথা বাড়িয়ে পোষ্টের দৈর্ঘ্য বাড়ানোতে কোন লাভ দেখি না।
    কোডইগনিটারে করা আমার প্রজেক্টের সংখ্যা অনেক। দেখি চেষ্টা করছি কোনটি দেয়ার জন্য……….

Level 0

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

    @rasel.wp: আসলে আমি যত চেষ্টাই করি না কেন সপ্তাহে একটির বেশি টিউন করার মত সময় বের করাটা আমার জন্য খুবই কঠিন। মূলত এখানে টিউন করাটা আমার এক কলিগের অনুরোধে। যার ধারনা টেকটিউনসের মত রিচ একটা সাইট এখন ডাউনলোড করুন, গেম খেলুন জাতীয় পোষ্টে ভরে আছে। শুধু ভাল কিছু লেখা দেয়ার জন্যই আমার লেখা এখানে। যাতে টিটির ভিজিটররা অন্ততপক্ষে প্রফেশনাল লেভেলের কিছু শিখতে পারে।
    আমি চেষ্টা করব যতটুকু পারি লিখতে….

Level 0

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

    @rayhan.it: একে ব্যস্ততা, এছাড়া শরীর প্রচন্ড খারাপ। লিভার অনেক দুর্বল হয়ে পড়েছে। যতটুকু পারি চেষ্টা করে যাচ্ছি। আপনাদের নিয়মিত অংশগ্রহনটা কিন্তু অবশ্য দরকার…..

Continue করেন bro অসাধারণ হচ্ছে । প্লিজ থামবেন না বা খুব বেশি দেরি করবেন না । আপনার উপস্থাপনাটা আসলেই Awesome ।

ভাইজান, ৫ নাম্বারটা দেন। অধির আগ্রহে অপেক্ষা করছি।

thank u via…..

নিরো ভাই, আপনাকে হিরোই মানতে হয়, এমন টিউটরিয়াল এর জন্য। আমি মনে প্রানে এমনি একটি চেইন টিউটরিয়াল খুজছিলাম, কারন অর্থ দিয়ে কোন প্রতিষ্ঠানে গিয়ে শেখার মত সামর্থ্য আমার নাই যদিও আমি ছোটো একটি চাকরি করি এবং যা বেতন পাই টা দিয়ে মেইনটেইন করতেই শেষ । তাই এটি আমার জন্য খুবই উপকার হল। আমি পিএইচপি বেছিক এবং এডভাঞ্চ টা সাতে OOP টা নিজে পরিশ্রম করে নেট ঘেঁটে ঘেঁটে মোটামুটি শিখেছি, এখন ফ্রেমঅর্ক টা শেখার অনেক দিন ধরে চেষ্টা করছি কিন্তু এবার মনে হয় আপনার টিউটরিয়াল পড়ে চেষ্টা করলে আল্লাহ্‌ সহায় হবেন।

স্যালুট ভাই আপনাকে…।

Level 0

khub chomotkar