[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Где-то ошибка с циклом.
McLotos
Пытаюсь всё-таки допилить свой класс. Следуя подсказке twin'а. Возник странный глюк.
Есть метод CreatePage
CreatePage
private function CreatePage()
{ if(is_file($this->tmp_dir.$this->CurrentPage().$this->ext) === FALSE) //если не найден файл текущей страницы
{$fileopen = fopen($this->tmp_dir . $this->CurrentPage() . $this->ext, "a+");
for($i=0;$i < count($this->buffer);$i++)
{fwrite($fileopen, $this->buffer[$i] . "\n\r");}
}


$dom = new DOMDocument;
libxml_use_internal_errors(true);
libxml_clear_errors();
$dom->loadHTMLFile($this->tmp_dir . $this->CurrentPage() . $this->ext);
$html = $dom->getElementsByTagName('html');
if ($html->item(0)->childNodes->item(0)->nodeName !== 'head')
{$this->addErrorInLog('Ошибка в шаблоне. В том месте, где предполагается head, находится что-то другое');}
else
{$this->Head($html);}
if ($html->item(0)->childNodes->item(1)->nodeName !== 'body')
{$this->addErrorInLog('Ошибка в шаблоне. В том месте, где предполагается body, находится что-то другое');}
else
{$this->Body($html);}
}

метод для построения шапки шаблона
private function Head($html)
{
for($i = 0; $i < $html->item(0)->childNodes->item(0)->childNodes->length;$i++)
{
switch($html->item(0)->childNodes->item(0)->childNodes->item($i)->nodeName)
{
case $this->HTMLtags[0] :
$this->setMetas($html);
break;
case $this->HTMLtags[1] :
$this->setTitle($html);
break;
case $this->HTMLtags[2] :
$this->setLinks($html);
break;
case $this->HTMLtags[3] :
$this->setJScripts($html);
break;
case $this->HTMLtags[4] :
break;
default :$this->addErrorInLog('Ошибка в шаблоне. В секции head найден неизвестный элемент');
}
}
}

метод для добавления в шаблон scripts src
private function setJScripts($html)
{$c=count($this->vars[$this->tag_start.'HEAD.Scripts'.$this->tag_end][0]);
echo '1';
for($i=0;($i<$html->item(0)->childNodes->item(0)->childNodes->length);$i++)
{if($html->item(0)->childNodes->item(0)->childNodes->item($i)->nodeName==$this->HTMLtags[3])
{$el=$i;}
}

for($i=0;$i<$c;$i++)
{$html->item(0)->childNodes->item(0)->appendChild($html->item(0)->childNodes->item(0)->childNodes->item($el)->cloneNode());}
}

в методе создания JS есть проверочная строка. Так я обычно проверяю выполняется ли вообще метод и сколько раз.
1 выводится 359 раз. Такого не должно быть. Она должна выводиться всего 1 раз


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.