Подскажите пожалуйста. В уроке модуль новостей меня немного смущало то, что после того как мы обрабатываем функцией mysql_fetch_assoc
while ($row = mysql_fetch_assoc($res))
{
$row['date'] = $row['day'] .' '. $lang_month_string[$row['month']] .' '. $row['year'];
$row['subtitle'] = htmlspecialchars($row['subtitle']);
$row['text'] = createBBtags($row['text'] , false) . "...";
$row['url'] = href( 'news=' . $row['id']);
$row['link'] = IRB_LANG_FULL_NEWS;
$news .= parseTpl($tpl, $row);
}
Получаем массив $row[]
И потом используем функцию parseTpl
ВОПРОС
Почему в шаблоне rows
<!-- ./skins/tpl/news/rows.tpl begin -->
<div style="padding:5px; margin-top:3px; width:250px; border:1px solid">
<p><?php echo $tpl_date ?><br />
<b><?php echo $tpl_subtitle; ?></b></p>
<p><?php echo $tpl_text; ?></p>
<div style="text-align:right"><a href="<?php echo $tpl_url; ?>"><?php echo $tpl_link; ?></a></div>
</div>
<!-- ./skins/tpl/news/rows.tpl end -->
Мы обращаемся к массиву $tpl_date а не $row['date']
У меня оба варианте обращения к массиву работают! Просто интересно почему так можно?
Спустя 19 минут, 31 секунда (28.03.2011 - 11:04) KonstantinK написал(а):
не понятный вопрос вот тут
$news .= parseTpl($tpl, $row);мы подставляем в функцию parseTpl() два аргумента первый это шаблон $tpl , а второй это массив данных $row , а что такое массив $tpl_date я не понял.
Спустя 18 минут, 38 секунд (28.03.2011 - 11:22) kent666 написал(а):
Переменная $tpl была определена ранее! Она просто в себе содержит шаблон rows.tpl.
Вопрос в том как мы можем обращаться к массиву $row через переменные
$tpl_date
$tpl_subtitle
$tpl_text
????
Я нигде не указывал что $tpl_date = $row['date']
Вопрос в том как мы можем обращаться к массиву $row через переменные
$tpl_date
$tpl_subtitle
$tpl_text
????
Я нигде не указывал что $tpl_date = $row['date']
Спустя 3 минуты, 6 секунд (28.03.2011 - 11:25) T1grOK написал(а):
Смотрите в саму функцию parseTpl() и все станет ясно. Там идет разбор массива(создание переменных) и подстановка в шаблон.
Спустя 3 минуты, 31 секунда (28.03.2011 - 11:29) kent666 написал(а):
Да действительно
Как то не обратил внимание на extract($data, EXTR_PREFIX_ALL, 'tpl');
Спасибо за разъяснения)))
function parseTpl($cont, $data = '')
{
if(is_array($data))
{
extract($data, EXTR_PREFIX_ALL, 'tpl');
ob_start();
eval('?>'. $cont .'<?php ');
$cont = ob_get_contents();
ob_end_clean();
}
return $cont;
}
Как то не обратил внимание на extract($data, EXTR_PREFIX_ALL, 'tpl');
Спасибо за разъяснения)))