ООП - проблема с методоми Unknow error

neonet

Новичок
ООП - проблема с методоми Unknow error

Никак не могу разобраться,
проблемы появились при переезде на другой хостинг:

PHP Version 5.2.10
register_globals Off
Apache 2.0
FreeBSD 6.3-STABLE


При загрузке страницы появляеться такого рода ошибки:


PHP:
Unknown error: Declaration of SubListFactory::move() should be compatible with that of ListFactory::move() in /home/ilya/data/www/site/sys/engine/list.inc on line 632

Unknown error: Declaration of StructureNode::load_from_parameters() should be compatible with that of TreeNode::load_from_parameters() in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 491

Unknown error: Declaration of StructureNode::set_template_vars() should be compatible with that of TreeNode::set_template_vars() in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 491

Unknown error: Declaration of CatalogNode::load_from_parameters() should be compatible with that of TreeNode::load_from_parameters() in /home/ilya/data/www/site/sys/modules/catalog/catalog.inc on line 459

Unknown error: Declaration of CatalogNode::set_template_vars() should be compatible with that of TreeNode::set_template_vars() in /home/ilya/data/www/site/sys/modules/catalog/catalog.inc on line 459
Пытался что нибудь нагуглить по это й теме, но безуспешно((( уже и незнаю где капать,
Попробывал скрыть ошибки , но тх выключения в php.ini - не дали никакого результата
 

neonet

Новичок
Помойму это очевидные вещи!...

Идет речь о несовместимости классов,
нашел похожую тему на данном форуме,

http://www.phpclub.ru/talk/showthread.php?threadid=114995&perpage=20&pagenumber=1

Но я так и не вкурил , тема не раскрыта(
 

zerkms

TDD infected
Команда форума
neonet
потому что программист должен уметь сам анализировать текст ошибки и принимать решение, а не с пеной у рта носиться по всему интернету и искать что-то похожее с готовым рецептом.
 

neonet

Новичок
Странные, вы..
Я прошу помощи разобраться в с данной ошибкой, а вы мне вместо этого наставляете что делать!..
Я и без этого сижу и пытаюсь разобраться, иногда паралельно заглядывая на форум...

2. Код написан не мной, что усложняет разбор палетов.
3. С ООП знаком лишь поверхостно.

З.Ы. самых модных, все знающих - но посылающих разабраться самаму с проблемой прошу не писать,..

Иначе, не просил бы о помощи...
 

fixxxer

К.О.
Партнер клуба
http://www.phpclub.ru/talk/showthread.php?postid=860715#post860715

какое из слов в этом посте непонятно?
 

neonet

Новичок
спасибо что хоть кто то по делу отвечает)

мне не понятно вот это :
просто добавьте параметр с умолчательным null в родителе, от вас совершенно естественно требуют совмещаемости определения методов
Что за параметр имееться ввиду?? их может быть несколько? Можно пожалуйста на любом примере...

Автор оригинала: fixxxer
http://www.phpclub.ru/talk/showthread.php?postid=860715#post860715

какое из слов в этом посте непонятно?
 

zerkms

TDD infected
Команда форума
neonet
тебе по делу отвечают, а ты по делу не задаёшь вопрос.
покажи код, который у тебя есть. предка, абстрактный класс, интерфейс, сам класс.
 

neonet

Новичок
Да.. и вот ещё. что.. я незнаю что произашло.. но дня 3-4 сайт работал без збоев, и каких либо ошибок - видно тоже небыло..

в следствии чего эта ошибка появилась, как раз пытаюсь и разобраться... но, что то мне не очень понятно как такое может быть!.... сайт ведь работал на данном хостинге, хоть и 3 дня

-~{}~ 10.07.09 02:45:
 

zerkms

TDD infected
Команда форума
Declaration of SubListFactory::move() should be compatible with that of ListFactory::move()
ты не то скопировал, ололо.

-~{}~ 10.07.09 09:51:

ну и что непонятно, собственно?
Перевожу: пределения метода move в классе SubListFactory должно быть совместимым с аналогичным методом в класса ListFactory.
а у тебя в наследнике аргументов меньше.
 

neonet

Новичок
zerkms
Спасибо тебе огромное.. Добрый человек)))..

-~{}~ 10.07.09 03:32:

ТОлько вот теперь, не ясно с

Unknown error: Declaration of StructureNode::set_template_vars() should be compatible with that of TreeNode::set_template_vars() in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 491

PHP:
<?
class TreeNode extends ListItem {
	var $children = array ();
	var $parent = NULL;
	var $level = 0;

	var $_first_child = NULL;
	var $_first_child_loaded = FALSE;

	function set_template_vars (&$tpl, $prefix, $form = FALSE) {
		$tpl->set_var ($prefix.'id', $this->id);
		$tpl->set_var ($prefix.'ord_index', $this->ord_index);
		$tpl->set_var ($prefix.'parent_id', $this->parent_id);
		$tpl->set_var ($prefix.'root_id', $this->root_id);
		$tpl->set_var ($prefix.'publish', $this->publish);
		$tpl->set_var ($prefix.'name', $this->name);

		$tpl->set_var ($prefix.'publish_full', $this->publish ? "Да" : "Нет");
		$tpl->set_var ($prefix.'publish_full_color', $this->publish ? "<font color=green>Да</font>" : "<font color=#990000>Нет</font>");

		if ($form) {
			$tpl->set_var ($prefix.'publish_checkbox', common_checkbox ($prefix.'publish', 1, $this->publish));
		}
	}

}



$factory_class = "CatalogTree";

class CatalogNode extends TreeNode {
	var $active = FALSE;

	var $_image = NULL;
	var $_page_title = NULL;
	var $_meta_keywords = NULL;
	var $_meta_description = NULL;

	var $no_request = FALSE;


	function set_template_vars (&$tpl, $form = FALSE) {
		parent::set_template_vars ($tpl, 'catalog_', $form);
		parent::set_template_vars ($tpl, 'structure_', $form);

		$tpl->set_var ('catalog_class', $this->class);
		$tpl->set_var ('catalog_treetype', $this->treetype);
		$tpl->set_var ('catalog_rewrite', $this->rewrite);
		$tpl->set_var ('catalog_rewrite_id', $this->get_rewrite ());
		$tpl->set_var ('catalog_from_root', $this->from_root);
		$tpl->set_var ('catalog_art', $this->art);
		$tpl->set_var ('catalog_opendown', $this->opendown);
		$tpl->set_var ('catalog_dimensions', $this->dimensions);
		$tpl->set_var ('catalog_material', $this->material);
		$tpl->set_var ('catalog_price', $this->price);
		$tpl->set_var ('catalog_announce', $this->announce);
		$tpl->set_var ('catalog_content', $this->content);
		$tpl->set_var ('catalog_content_right', $this->content_right);
		$tpl->set_var ('catalog_viewtype', $this->viewtype);
		$tpl->set_var ('catalog_page_h1', $this->page_h1);
		$tpl->set_var ('catalog_page_title', $this->page_title);
		$tpl->set_var ('catalog_meta_keywords', $this->meta_keywords);
		$tpl->set_var ('catalog_meta_description', $this->meta_description);
		$tpl->set_var ('catalog_show_children', $this->show_children);

		$tpl->set_var ('catalog_treetype_full', $this->treetype ? $this->treetype : getArrayValue ($this->treetype, $this->factory->treetypes));
		$tpl->set_var ('catalog_class_full', $this->class_full ? $this->class_full : getArrayValue ($this->class, $this->factory->class_names));
		$tpl->set_var ('catalog_viewtype_full', getArrayValue ($this->viewtype, $this->factory->viewtypes));
		$tpl->set_var ('catalog_opendown_full', $this->opendown ? 'Да' : 'Нет');
		$tpl->set_var ('catalog_publish_prices_full', $this->publish_prices ? 'Да' : 'Нет');
		$tpl->set_var ('catalog_publish_at_page_full', $this->publish_at_page ? 'Да' : 'Нет');
		$tpl->set_var ('catalog_publish_at_page_full_color', $this->publish_at_page ? "<font color=green>Да</font>" : "<font color=#990000>Нет</font>");
		$tpl->set_var ('catalog_show_children_full', $this->show_children == -1 ? '<img src="/img/p.gif" width="13" height="15" border="0">' : ($this->show_children ? '<img src="/img/minusg.gif" width="13" height="15" border="0">' : '<img src="/img/plusg.gif" width="13" height="15" border="0">'));

		$tpl->set_var ('catalog_icon', "/".$this->icon->image);
		$tpl->set_var ('catalog_image', "/".$this->image->image);

		$tpl->set_var ('structure_icon_showbig_tag', $t = $this->icon->get_img_tag (0, 0, NULL, 0, "/", $this->getAlt(), ' class="grbrd"'));
//		$tpl->set_var ('structure_icon_showbig_returnfalse', ($this->image->image ? 'showImage(\'/'.$this->image->image.'\');' : "alert('Нет большой картинки')") . "return false;");
		$tpl->set_var ('structure_icon_showbig_returnfalse', ($this->image->image ? 'showImage(\'/'.$this->get_page_address(FALSE).'?show=window\');' : "alert('Нет большой картинки')") . "return false;");

		$tpl->set_var ('catalog_icon_tag', $t = $this->icon->get_img_tag (0, 0, NULL, 0, "/", $this->getAlt(), ''));
		$tpl->set_var ('structure_icon_tag', $t);
		$tpl->set_var ('catalog_icon_tag_small', $this->icon->get_img_tag (0, 40, NULL, 0, "/", $this->name, ''));
		$tpl->set_var ('catalog_image_tag', $this->image->get_img_tag (0, 0, NULL, 0, "/", $this->getAlt(), ''));
		$tpl->set_var ('structure_image_tag', $t);
		// $tpl->set_var ('catalog_image_tag', $this->image->get_img_tag (0, 0, NULL, 0, MY_HTTP_ROOT_PATH, '', ''));

		$tpl->set_var ('catalog_page_address', $a = $this->id ? $this->get_page_address () : '');
		$tpl->set_var ('structure_page_address', $a);
		$tpl->set_var ('catalog_page_address_nohost', $this->id ? $this->get_page_address (FALSE) : '');

		if ($form) {
			$tpl->set_var ('catalog_class_select', common_select_button ('catalog_class', $this->factory->classes, $this->class));
			$tpl->set_var ('catalog_treetype_select', common_select_button ('catalog_treetype', $this->factory->treetypes, $this->treetype, "", "", "", " disabled=1"));
			$tpl->set_var ('catalog_viewtype_select', common_select_button ('catalog_viewtype', $this->factory->viewtypes, $this->viewtype));
			$tpl->set_var ('catalog_opendown_checkbox', common_checkbox ('catalog_opendown', 1, $this->opendown));

			$tpl->set_var ('catalog_from_root_checkbox', common_checkbox ('catalog_from_root', 1, $this->from_root));

			$tpl->set_var ('catalog_publish_prices_checkbox', common_checkbox ('catalog_publish_prices', 1, $this->publish_prices));
			$tpl->set_var ('catalog_publish_at_page_checkbox', common_checkbox ('catalog_publish_at_page', 1, $this->publish_at_page));
			$tpl->set_var ('catalog_show_children_checkbox', common_checkbox ('catalog_publish_prices', 1, $this->publish_prices));

			$tpl->set_var ('catalog_icon_ctl', $this->icon->control ('catalog_icon', FALSE, FALSE));
			$tpl->set_var ('catalog_image_ctl', $this->image->control ('catalog_image', FALSE, FALSE));
		}
	}
?>
Добавляю параметр $prefix,

в function set_template_vars (&$tpl, $prefix, $form = FALSE)

вылазиет куча других ошибок
 

neonet

Новичок
Точно.. )

Warning: Missing argument 2 for StructureNode::set_template_vars(), called in /home/ilya/data/www/site/sys/main.inc on line 605 and defined in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 142

PHP:
foreach ($strips as $id => $dummy) {
			$lst = &$strip_blocks[$id];
			$strip = &$strips[$id];
			$h = 100;
			$w = 50;

			$cols = min($_cols, sizeof ($lst));
			if (! $cols) $cols = 1;
			$tpl->set_var ('widthper', floor(100/$cols)."%");

			if (is_object ($strip)) {
				$tpl->set_var ('strip_head', "<h2>".$strip->name."</h2>");
				$tpl->set_var ('strip_text', $strip->content);
			} else {
				$tpl->set_var ('strip_head', '');
				$tpl->set_var ('strip_text', '');
			}

			if ($lst) {
	//			$list = $index->load_children (TRUE);

				$tpl->set_var ('p_rows', '');
				$tpl->set_var ('dummy', '');

				$rows = ceil (sizeof ($lst) / $cols);

				if ($lst)
				for ($i = 0; $i < $rows; $i++) {
					$tpl->set_var ('p_cols', '');

					$delta = sizeof ($lst) - $i * $cols;
					$corr_last = $delta < $cols ? floor (($cols - $delta) / 2) : 0;

					for ($j = 0; $j < $cols; $j++) {
						$idx = $i * $cols + $j - $corr_last;

						if ($idx < sizeof ($lst) && ($j - $corr_last >= 0)) {
							$item = &$lst[$idx];

							if ($item->icon->image) {
								$h = $item->icon->height;
								$w = $item->icon->width;
							} else {
								$item->icon->image = 'img/p.gif';
								$item->icon->height = $h;
								$item->icon->width = $w;
							}

							$item->set_template_vars ($tpl);

							$tpl->parse ('p_cols', 'p_col', TRUE);
						} else {
							$tpl->parse ('p_cols', 'p_col_empty', TRUE);
						}
					}
					$tpl->parse ('p_rows', 'p_row', TRUE);
				}
			}
			$tpl->parse ('strip_blocks', 'strip_block', TRUE);
		}
605 - >>> $item->set_template_vars ($tpl);
 

zerkms

TDD infected
Команда форума
Warning: Missing argument 2 for StructureNode::set_template_vars(), called in /home/ilya/data/www/site/sys/main.inc on line 605 and defined in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 142


Предупреждение: Отсутствует аргумент 2 StructureNode:: set_template_vars (), называемый в / главная / Илья / данные / WWW / Сайт / система / main.inc по строке 605, и это определено в / главная / Илья / данные / WWW / Сайт / система / Модули / Структура / structure.inc по строке 142

перевод с translate.google.com В следующий раз сам переведёшь? :)
 

neonet

Новичок
Да..это я и без переводчика понял...
вот думаю.. теперь откуда этот аргумент взять..

пока не догоняю..

-~{}~ 10.07.09 04:02:

В любом случае.. спасибо..за оказанную помощь..!
Наверно пойду просплюсь.. завтра продолжу изучать код.

-~{}~ 10.07.09 04:13:

Только вот до сих пор всё же мне не понянто ..
почему скрипт ранее (3 дня до этого ) функционировал без каких либо проблем... а щас начал вот такие вот ошибки выплевывать?
 

dimagolov

Новичок
хостер обновился до 5.3.0, судя по всему (или до 5.2.9 как минимум)
neonet, ты недостающий параметр всавил в середину, значит и во всех вызовах этого предка в СЕРЕДИНУ надо добавить что-нибудь, например NULL в качестве параметра. а вообще за такое надо руки отрывать - убирать параметр который был в предке в декларации потомка, это к тому, кто писал этот код.
 

neonet

Новичок
Автор оригинала: dimagolov
хостер обновился до 5.3.0, судя по всему (или до 5.2.9 как минимум)
neonet, ты недостающий параметр всавил в середину, значит и во всех вызовах этого предка в СЕРЕДИНУ надо добавить что-нибудь, например NULL в качестве параметра. а вообще за такое надо руки отрывать - убирать параметр который был в предке в декларации потомка, это к тому, кто писал этот код.
спасибо, пойду шаманить...

а версия таки 5.2.10 стоит.. источник phpinfo()

-~{}~ 10.07.09 12:38:

не понимаю....

добавил
PHP:
function set_template_vars (&$tpl, $prefix='structure_', $form = FALSE)
вместо того что было

PHP:
function set_template_vars (&$tpl,  $form = FALSE)
Ошибка всё равно никуда не делась(

PHP:
Unknown error: Declaration of StructureNode::set_template_vars() should be compatible with that of TreeNode::set_template_vars() in /home/ilya/data/www/site/sys/modules/structure/structure.inc on line 491

tree.inc
PHP:
class TreeNode extends ListItem {
	var $children = array ();
	var $parent = NULL;
	var $level = 0;

	var $_first_child = NULL;
	var $_first_child_loaded = FALSE;

	function set_template_vars (&$tpl, $prefix, $form = FALSE) {
		$tpl->set_var ($prefix.'id', $this->id);
		$tpl->set_var ($prefix.'ord_index', $this->ord_index);
		$tpl->set_var ($prefix.'parent_id', $this->parent_id);
		$tpl->set_var ($prefix.'root_id', $this->root_id);
		$tpl->set_var ($prefix.'publish', $this->publish);
		$tpl->set_var ($prefix.'name', $this->name);

		$tpl->set_var ($prefix.'publish_full', $this->publish ? "Да" : "Нет");
		$tpl->set_var ($prefix.'publish_full_color', $this->publish ? "<font color=green>Да</font>" : "<font color=#990000>Нет</font>");

		if ($form) {
			$tpl->set_var ($prefix.'publish_checkbox', common_checkbox ($prefix.'publish', 1, $this->publish));
		}
	}
}
structure.inc
PHP:
class StructureNode extends TreeNode {
	var $active = FALSE;

	var $_image1 = NULL;
	var $_image2 = NULL;
	var $_meta_keywords = NULL;
	var $_meta_description = NULL;

	var $no_request = FALSE;

	function set_template_vars (&$tpl, $prefix='structure_', $form = FALSE) {
		parent::set_template_vars ($tpl, 'structure_', $form);

		$tpl->set_var ('structure_rewrite', $this->rewrite);
		$tpl->set_var ('structure_rewrite_id', $this->get_rewrite ());
		$tpl->set_var ('structure_from_root', $this->from_root);
		$tpl->set_var ('structure_class', $this->class);
		$tpl->set_var ('structure_mmenu', $this->mmenu);
		$tpl->set_var ('structure_opendown', $this->opendown);
		$tpl->set_var ('structure_announce_ttl', $this->announce_ttl);
		$tpl->set_var ('structure_announce', $this->announce);
		$tpl->set_var ('structure_content', $this->content);
		$tpl->set_var ('structure_page_h1', $this->page_h1);
		$tpl->set_var ('structure_page_title', $this->page_title);
		$tpl->set_var ('structure_meta_keywords', $this->meta_keywords);
		$tpl->set_var ('structure_meta_description', $this->meta_description);

		$tpl->set_var ('structure_class_full', $this->class_full ? $this->class_full : getArrayValue ($this->class, $this->factory->class_names));
		$tpl->set_var ('structure_mmenu_full', getArrayValue ($this->mmenu, $this->factory->mmenu_variants));
		$tpl->set_var ('structure_opendown_full', $this->opendown ? 'Да' : 'Нет');

		$tpl->set_var ('structure_publish_in_announces_full', $this->publish_in_announces ? 'Да' : 'Нет');
		$tpl->set_var ('structure_publish_announces_full', $this->publish_announces ? 'Да' : 'Нет');

		$tpl->set_var ('structure_icon', "/".$this->icon->image);
		$tpl->set_var ('structure_image1', "/".$this->image1->image);
		$tpl->set_var ('structure_image2', "/".$this->image2->image);

		$tpl->set_var ('structure_icon_tag', $this->icon->get_img_tag (0, 0, NULL, 0, "/", $this->name, ''));
		$tpl->set_var ('structure_image1_tag', $this->image1->get_img_tag (0, 0, NULL, 0, "/", '', ''));
		// $tpl->set_var ('structure_image1_tag', $this->image1->get_img_tag (0, 0, NULL, 0, MY_HTTP_ROOT_PATH, '', ''));
		// $tpl->set_var ('structure_image2_tag', $this->image2->get_img_tag (0, 0, NULL, 0, MY_HTTP_ROOT_PATH, '', ''));

		$tpl->set_var ('structure_page_address', $this->id ? $this->get_page_address () : '');

		if ($form) {
			$tpl->set_var ('structure_class_select', common_select_button ('structure_class', $this->factory->classes, $this->class));

			$tpl->set_var ('structure_mmenu_select', common_select_button ('structure_mmenu', $this->factory->mmenu_variants, $this->mmenu));
			$tpl->set_var ('structure_opendown_checkbox', common_checkbox ('structure_opendown', 1, $this->opendown));

			$tpl->set_var ('structure_from_root_checkbox', common_checkbox ('structure_from_root', 1, $this->from_root));

			$tpl->set_var ('structure_publish_in_announces_checkbox', common_checkbox ('structure_publish_in_announces', 1, $this->publish_in_announces));
			$tpl->set_var ('structure_publish_announces_checkbox', common_checkbox ('structure_publish_announces', 1, $this->publish_announces));

			$tpl->set_var ('structure_icon_ctl', $this->icon->control ('structure_icon', FALSE, FALSE));
			$tpl->set_var ('structure_image1_ctl', $this->image1->control ('structure_image1', FALSE, FALSE));
			$tpl->set_var ('structure_image2_ctl', $this->image2->control ('structure_image2', FALSE, FALSE));
		}
	}
}
-~{}~ 10.07.09 12:39:

Мой.. моск. шас вскипит ...
 
Сверху