আমি পিএইচপি এবং একটি মাইএসকিউএল ব্যাকএন্ড সহ একটি সাইট তৈরি করছি। তবে, আমি বর্তমানে কোনও ধরণের কাঠামো ব্যবহার করছি না। আমার কি মডেল ভিউ কন্ট্রোলার ব্যবহার করা উচিত?
আমি পিএইচপি এবং একটি মাইএসকিউএল ব্যাকএন্ড সহ একটি সাইট তৈরি করছি। তবে, আমি বর্তমানে কোনও ধরণের কাঠামো ব্যবহার করছি না। আমার কি মডেল ভিউ কন্ট্রোলার ব্যবহার করা উচিত?
উত্তর:
আমার থাম্ব বিধি:
যে কোনও পৃষ্ঠা যা একটি ডাটাবেসকে হিট করে বা কোনও ব্যবহারকারীর ইনপুট প্রয়োজন তার কোনও এমভিসি কাঠামোর সাহায্যে পরিচালনা করা সহজ হবে।
আপনার অগত্যা পুরো কাঠামোর সাথে চলার দরকার নেই , যদি সাইটটি মোটামুটি সহজ হয় তবে প্রতিটি পৃষ্ঠার জন্য এটির জন্য প্রয়োজনীয় একটি সাধারণ পৃষ্ঠা নিয়ন্ত্রক শ্রেণি ব্যবহার করতে পারেন ( উপরে দেখুন )। এটি আপনার পক্ষে কোনও স্কেলযোগ্য সমাধান নয় - তাই প্রকল্পের দীর্ঘমেয়াদী লক্ষ্যগুলি মনে রাখবেন।
এখানে একটি (দ্রুত একসাথে হ্যাক করা) পেজ কন্ট্রোলার সেটআপের একটি মোটামুটি স্কেচ রয়েছে:
index.php
--------------------------------------------------------
include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();
Controller.php
--------------------------------------------------------
class Controller($db){
/* ensure all collaborators are provided */
public function __construct(Db $db, View $view){
$this->db = $db;
$this->db->connect(array('host','db','user','pass'));
$this->view = $view;
}
/* load the appropriate model data */
public function route($_GET){
//load the right model data and template
switch($_GET){
case $_GET['articles'] === 'cats':
$this->vars = $this->db->get('cats');
$this->template = 'cats.php';
break;
case $_GET['articles'] === 'dogs':
break;
$this->vars = $this->db->get('dogs');
$this->template = 'dogs.php';
default:
$this->vars = array();
}
}
/* render an html string */
public function render(){
echo $this->view->render($this->template,$this->vars);
}
}
View.php
------------------------------------------------------------
class View.php
{
/* return a string of html */
public function render($template,$vars){
// this will work - but you could easily swap out this hack for
// a more fully featured View class
$this->vars = $vars;
ob_start();
include $template;
$html = ob_get_clean();
return $html;
}
}
template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
$html .= str_replace(
array(%name%,%breed%,%color%),
array($row['name'],$row['breed'],$row['color']),
$row_template);
}
echo $html;
Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO
আমি বলব যে সাইটটি একটি অপ্রয়োজনীয় আকারের বাইরে বাড়ার কোনও সম্ভাবনা থাকলে ভাল হবে would মূল কারণ আপনি ভবিষ্যতে সাইটটি পরিবর্তন এবং রক্ষণাবেক্ষণের জন্য আরও ভাল দক্ষতা অর্জন এবং রক্ষণাবেক্ষণ বেশিরভাগ প্রকল্পের কাজ। এটি আপনাকে উদ্বেগ, সাইট সংস্থার একটি দুর্দান্ত বিচ্ছেদ দেয় এবং পুনরাবৃত্তি এবং অগোছালো কোড এড়াতে সহায়তা করে।
এমভিসি হ'ল একটি প্যাটার্ন যা ওয়েবসাইটগুলির জন্য সুপরিচিত এবং স্বীকৃত এবং আপনি যদি অন্য লোককে এই প্রকল্পে নিয়ে আসেন তবে তা সহায়তা করবে। সেই লক্ষ্যে আপনি সম্ভবত একটি সূচিত কাঠামো শুরু করতে চান।
আপনি এমন কোনও বিশদ সরবরাহ করেন নি যা প্রশ্নের উত্তর দিতে সহায়তা করতে পারে, তবে এই ক্ষেত্রে আমার ডিফল্ট সুপারিশটি হ্যাঁ, "হ্যাঁ, এমভিসি ফ্রেমওয়ার্ক ব্যবহার করুন"। আপনি যখন সত্যই নিশ্চিত হন যে আপনার এটির প্রয়োজন আছে কেবল তখনই একটি কাস্টম সমাধান নিয়ে যান।
আর্কিটেকচার হিসাবে, এমভিসি আপনার প্রকল্প / ওয়েবপেজকে একাধিক অংশে বিভক্ত করার দিকে মনোনিবেশ করে। কোড বা ইউজার ইন্টারফেসে আপনাকে কিছু পরিবর্তন করতে হবে যখন এটি আপনার জীবনকে আরও সহজ করে তুলতে পারে।
থাম্বের বিধি, যদি আপনি আপনার প্রকল্পের নির্দিষ্টকরণের পরিবর্তনগুলির প্রত্যাশা করেন বিশেষত যখন এই পরিবর্তনগুলি পুরো কোডকে প্রভাবিত করে, তবে সেই আর্কিটেকচারের সাথে যান যা আপনাকে কোডটিকে ছোট ছোট লেগো টুকরো টুকরো করতে বাধ্য করে।
এই মুহূর্তে না। আপনার সাইটটি আরও বড় এবং অগোছালো না হওয়া পর্যন্ত অপেক্ষা করুন। আপনি নিজেকে জিজ্ঞাসা করবেন - জিনিসগুলিকে কম অগোছালো করার জন্য আমি কী করতে পারি? আপনি এমভিসিতে একটি নিবন্ধ পড়বেন এবং আপনি এটি পছন্দ করবেন। আপনি এটি আর ব্যবহার করবেন কিনা তা নিয়ে প্রশ্ন করা হবে না। তুমি জানবে. এটি ব্যবহার শুরু করার মুহুর্ত হবে।