отладка больших модулей

ZloiJoker

Новичок
отладка больших модулей

Как вообще отлаживаются, большие движки основанные на смарти, пеар.. и где четкое разделение бизнес логики от представления..
Есть движок.. , работающий на смарти и пеар + пхп при переноси на 5 пхп он стал работать некоректно(какая то структура фич наверное не сработало, там где дерева сайта он выводит везде только первое значение, хотя кол во элиментов правильное и вложенность та!) но без ошибки
 

Tor

Новичок
модульное тестирование и функциональное тестирование
TDD в общем
 

ZloiJoker

Новичок
Где про это можно прочитать ? (относительно данного случа ) )
 

wrapper

Guest
Tor
причем тут TDD?

ZloiJoker
просто бери и отлаживай, а лучше скачай последние версии того-что-ты-используешь и попробуй снова
 

Кром

Новичок
>но без ошибки

А ты в этом уверен? Какой у тебя уровень перехвата ошибок стоит?

>там где дерева сайта он выводит везде только первое значение

И что? Проблема не разрешима? Залезь в код найди место, которое выводит твое дерево и посмотри, почему работает не так, как тебе надо.
 

ZloiJoker

Новичок
ДЛЯ ЗНАТОКОВ КЛАСС ПЕАР DB_DataObject

// Получение дерева иерархии для задоного узла
function getTree($pg_id = 0, $maxlevels = false, $level = 0)
{
$group = &new PageGroup(); // extends DB_DataObject
$group->get($pg_id); // взято с PEAR DataObject.php * Get a result using key, value.
$group->level = $level; // * @param int $level Level of recursi

$notvisited[] = $group; // TODO
$tree = array();
while (1)
{

$cur = array_shift($notvisited); // TODO
if($cur==null) break; // TODO
$tree[] = $cur;
Var_Dump::display($cur->pg_id);
if(!$maxlevels || ($maxlevels>$cur->level)) // $maxlevels = false, $level = 0)
{
$childs = &new PageGroup();
$childs->finde ('pg_isactive=1 AND pg_group='.$cur->pg_id, 'pg_pos DESC', 'pg_id, pg_name,pg_name_en, pg_group, pg_nick');

while($childs->fetch())
{

$child = $childs;
$child->level = $cur->level+1;
array_unshift($notvisited,$child);
}
}
}
array_shift($tree);
return $tree;
}



function finde ($where= false, $order= false, $select= false, $page= false, $limit= false, $join= false, $jointype= false)
{
$this->whereAdd();
if ($where)
{
$this->whereAdd($where);
}

$this->orderBy();
if ($order)
{
$this->orderBy($order);
}

if ($select)
{
$this->selectAdd();
$this->selectAdd($select);
}

if ($join)
{
$newjointype= $jointype ? $jointype : 'INNER';
$this->joinAdd($join, $newjointype);
}

$this->count= $this->count();
if ($page)
{
$this->count= $this->count();
$this->limit= $limit;
$this->limit($limit * ($page -1), $limit);
}

$this->find();
return $this->N; /// ОТКУДО ЭТО ВООБЩЕ ????
}

в первой фуции за счет чего меняется: $cur->pg_id ?????? (для меня вообще полная загадка!)
 

Кром

Новичок
>в первой фуции за счет чего меняется: $cur->pg_id ?????? (для меня вообще полная загадка!)

var_dump тебе в руки. Находишь то значение, которое тебя не устраивает и от него двигаешься "вверх по логике работы" скрипта. Это и есть отладка.
 
Сверху