Ancak ben modeli ve denetleyici parçası ayırt mücadele ediyorum benim kendi PHP MVC yazdı ettik. Denetleyici bir istek nesne form verilerini çekerek, ve gerçek veritabanı ekleme işlemek için Model geçirmeden, veritabanına veri eklemek basit bir form ile örneğin. Ancak biraz yinelenen bir sürü kod burada var gibi görünüyor, bu tamamen Model parçası kaldırmak için basit olabilir ve sadece veritabanı denetleyicisi eklerim olmazdı?
Bazı durumlarda ben ancak bu sürekli Modeli ve denetleyici ayırmak için gerekli tüm ekstra kodlama değer görünmüyor olur occasioanl süre için, aynı model eylemini kullanarak birden kontrolörleri olabilir anlıyoruz?
Bu mantıklı eğer, ben aslında basit bir fonksiyon ne için bir sürü kod yazıyorum gibi şeyler yapmanın uzun soluklu bir yol gibi görünüyor o kadar çok yinelenen kod daha değil mi?
Kontrolör örnek kod
// processes the new site data
public function add_new_process() {
// execute action in model
$Model_Websites = new Model_Websites();
$name = $this->request->getPropertyFiltered('sitename',array('sanitize'));
$descrip = $this->request->getPropertyFiltered('descrip',array('sanitize'));
$url = $this->request->getPropertyFiltered('siteurl',array('sanitize'));
$signup_url = $this->request->getPropertyFiltered('signupurl',array('sanitize'));
$acct_id = $this->request->getPropertyFiltered('acct_id',array('sanitize'));
$thumbnail = $this->request->getPropertyFiltered('thumb',array('sanitize'));
if($Model_Websites->addNewSite($name,$descrip,$url,$signup_url,$acct_id,$thumbnail)) {
$this->request->addFeedback("Your new website has been added succesfully!");
$this->request->setFeedbackStatus(true);
$this->request->storeFeedbackInSession();
$this->template->redirectBrowser(__SITE_URL.'/websites/');
} else {
$this->template->setProperty('page_title', Registry::getConfig('site_name').' :: Add New Website' );
$this->template->render('websites','show_form'); // controller,view
}
}
Model örnek kod
function addNewSite($name,$descrip,$url,$signup_url,$acct_id,$thumbnail) {
$pdo = ConnectionFactory::instance()->getConnection();
$stmt = $pdo->prepare("INSERT INTO {$this->db_table_websites} SET
name = :name
, descrip = :descrip
, url = :url
, signup_url = :signup_url
, acct_id = :ccbill_site_id
, thumbnail = :thumbnail
");
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':descrip', $descrip, PDO::PARAM_STR);
$stmt->bindParam(':url', $url, PDO::PARAM_STR);
$stmt->bindParam(':signup_url', $signup_url, PDO::PARAM_STR);
$stmt->bindParam(':acct_id', $acct_id, PDO::PARAM_STR);
$stmt->bindParam(':thumbnail', $thumbnail, PDO::PARAM_STR);
if($stmt->execute()) return true;
else return false;
}