if($ok)
{
if(empty($POST['value1']))
$info[] = IRB_LANG_NO_NAME;
if(empty($POST['value2']))
$info[] = IRB_LANG_NO_TEXT;
if(empty($info))
{
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."guest`
SET
`name` = '". escapeString($POST['value1']) ."',
`text` = '". escapeString($POST['value2']) ."'"
);
reDirect();
}
}
$pgt = new IRB_Paginator($GET['num'], IRB_CONFIG_NUM_ROWS);
$res = $pgt -> countQuery("SELECT DATE_FORMAT(`date`,'%d-%m-%Y') AS `date`,
`name`, `text`
FROM `". IRB_DBPREFIX ."guest`
ORDER BY `id` ASC"
);
$page_menu = $pgt -> createMenu();
$rows = '';
if(mysql_num_rows($res) > 0)
{
$cont = getTpl('guest/rows');
$bb = new IRB_BBdecoder();
while($row = mysql_fetch_assoc($res))
{
$row['name'] = htmlspecialchars($row['name']);
$row['text'] = $bb -> createBBtags($row['text']);
$rows .= parseTpl($cont, $row);
}
}
$POST = htmlChars($POST);
include IRB_ROOT .'/skins/tpl/guest/show.tpl';
Поехали :)
Ворможно это и контроллер, но не контролер в смысле MVC.
Причина тому то, что полностью отсутствует View-Skript.
Как понять начинающему програмисту то, что такие переменные как $info, $page_menu и $rows будут применены где то в IRB_ROOT .'/skins/tpl/guest/show.tpl';
Участок:
if(mysql_num_rows($res) > 0)
{
$cont = getTpl('guest/rows');
$bb = new IRB_BBdecoder();
while($row = mysql_fetch_assoc($res))
{
$row['name'] = htmlspecialchars($row['name']);
$row['text'] = $bb -> createBBtags($row['text']);
$rows .= parseTpl($cont, $row);
}
}
занимается тем, чем должно заниматься именно View.
Теперь добавляем туда еще какой нибудь банер с парачкой sql и начинаем удивляться почему стало все таким большим, непонятным, не тестируемым и монолитным. Не чего не остается как делатъ refactoring этого кода (дрожа от страха, что измененный не тестируемый код может привести к непредсказуемым эффектам), который с самого начала мог быть написан правильно, или осторожно оглянутся "не видет ли кто?" и наляпать свой код в общую кучу в надежде, что ни чего изменять больше не придется, или что когда то найдется время чтоб это улучшить( которого ни когда нет, пока все работает).
Правильно ли называть "name" как $POST['value1'] или "text" как $POST['value2'] ?
Что лучше видеть в коде контролера это:
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."guest`
SET
`name` = '". escapeString($POST['value1']) ."',
`text` = '". escapeString($POST['value2']) ."'"
);
или это:
$guest = new Guest($name);
$gusst->setText($text);
$guest->save();
Не лучше ли все что потом будет изменяться или происходить с Guest дальше в нем и программировать? Что мы теряем? немного скорости и немного памяти, но зато у нас появляется чтото понятное, не просто строка в базе данных, а ГОСТЬ!
ГОСТЬ, это понятное не только другим программистам, но и начальнику отдела кадров и даже уборщице.
Ну а в общем, если код не когда не меняется, не когда не будет интересен в будущем, то так бы тоже устроило.
_____________
↓↓↓↓↓↓↓↓↓↓ответ может быть здесьили в mysql_error();