Попередня тема :: Наступна тема |
Автор |
Повідомлення |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 30 Тра 2012 03:12 Заголовок повідомлення: Клим,Напалм-хелп. |
|
|
Код: |
<?php
class centr_page
{
function get_main_page($kategory,$brand,$goods,$lang)
{
ололомного кода
$this->show_different($max_tovar_id[0]);
}
function show_different($max_tovar_id)
{
ещё некоторый код
при определенном условии срабатывает рекурсия
$centr_page->show_different($max_tovar_id);
}
}
?>
|
так вот,если стоит $centr_page->show_different($max_tovar_id); то выдает ошибку Call to a member function show_different() on a non-object
а если написать $this->show_different($max_tovar_id); то вообще в 404 валится
мужики,где я туплю не по-детски?
|
|
Повернутися до початку |
|
 |
cooler

Статус: Offline Зареєстрований: 19.05.2012 Повідомлення: 30 Звідки: Kyiv Моє авто: ЗАЗ 968M
|
Додано: 30 Тра 2012 07:27 Заголовок повідомлення: Re: Клим,Напалм-хелп. |
|
|
sanitar писав(ла): |
а если написать $this->show_different($max_tovar_id); то вообще в 404 валится |
Может в 500ку валится?
404 - not found, или у тебя $this->show_different($max_tovar_id); пытается редиректнуть или инклуднуть несуществующий скрипт
|
|
Повернутися до початку |
|
 |
napalm Главврач


Статус: Offline Зареєстрований: 11.04.2003 Повідомлення: 9916 Звідки: Киев Моє авто: ЗАЗ-965А
|
Додано: 30 Тра 2012 11:02 Заголовок повідомлення: Re: Клим,Напалм-хелп. |
|
|
sanitar писав(ла): |
так вот,если стоит $centr_page->show_different($max_tovar_id); то выдает ошибку Call to a member function show_different() on a non-object |
Конечно. А чего ты еще ожидаешь, обращаясь к методу объекта, через имя класса?
Если хочешь обращаться к методу класса, то во-первых, этот метод нужно определить как static, во-вторых, обращаться к нему через двоеточие
centr_page::show_different($max_tovar_id)
(либо в данном случае можно через self::show_different($max_tovar_id))
sanitar писав(ла): |
а если написать $this->show_different($max_tovar_id); то вообще в 404 валится |
от вхождения в рекурсию, такое вполне может быть
|
|
Повернутися до початку |
|
 |
cooler

Статус: Offline Зареєстрований: 19.05.2012 Повідомлення: 30 Звідки: Kyiv Моє авто: ЗАЗ 968M
|
Додано: 30 Тра 2012 11:13 Заголовок повідомлення: Re: Клим,Напалм-хелп. |
|
|
napalm писав(ла): |
от вхождения в рекурсию, такое вполне может быть |
В первый раз слышу, либо таймаут по обработке (с фронтом), либо отлуп по жору памяти.
Хотя может ты и прав, не встречался с таким.
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 30 Тра 2012 14:20 Заголовок повідомлення: |
|
|
именно в 404
Колян,спасиб.вечером попробую.
|
|
Повернутися до початку |
|
 |
napalm Главврач


Статус: Offline Зареєстрований: 11.04.2003 Повідомлення: 9916 Звідки: Киев Моє авто: ЗАЗ-965А
|
Додано: 30 Тра 2012 18:19 Заголовок повідомлення: |
|
|
дык просто перебирание вариантов тут не поможет.
судя по названию метода, он сравнивает свой объект с переданным в него.
то есть статическим такой метод быть не может по самой логике (т.к. у статического метода есть только класс, но не объякт).
По этому, явно вызов должен быть $this->show_different(...);
А вот почему такой вызов валится (из-за бесконечной рекурсии или нет) - это уже надо вникать в саму суть происходящего.
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 30 Тра 2012 22:28 Заголовок повідомлення: |
|
|
хм,а может быть,да,что из-за бесконечной рекурсии он сразу падает в 404?ибо походу там она и выходит....
|
|
Повернутися до початку |
|
 |
napalm Главврач


Статус: Offline Зареєстрований: 11.04.2003 Повідомлення: 9916 Звідки: Киев Моє авто: ЗАЗ-965А
|
Додано: 31 Тра 2012 12:20 Заголовок повідомлення: |
|
|
если используешь mod_rewrite, то думаю вполне возможно
т.к. на место несуществующего файла зависший скрипт так ничего и эмулирует
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 31 Тра 2012 12:46 Заголовок повідомлення: |
|
|
агась,использую.
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 20 Червень 2012 18:13 Заголовок повідомлення: |
|
|
выкроил время,разобрался.действительно помог статик + 404 было из-за того,что я на время теста поставил условие,при котором рекурсивный вызов срабатывал при каждом вхождении,без вариаций.представляю в какую глубину оно валилось....
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 28 Червень 2012 02:56 Заголовок повідомлення: |
|
|
я опять со своей ооп бедой
Код: |
static function get_parent_kat($this_kat,$kat_array)
{
$list_result = db_query("SELECT id,name FROM kategory WHERE id=(SELECT p_id FROM kategory WHERE id=".$this_kat.")");
if (mysql_num_rows($list_result) > 0)
{
$list_row=mysql_fetch_array($list_result);
$kat_array[]=array('id'=>$list_row['id'],'name'=>$list_row['name']);
centr_page::get_parent_kat($list_row['id'],$kat_array);
}
else
{
$reversed=array_reverse($kat_array);
$send_back='';
for ($y=0;$y<count($reversed);$y++)
{
$send_back.="<a href='/goods/".$reversed[$y]['id']."' class='def_link_list' style='text-decoration:none;font-weight:bold;'>".$reversed[$y]['name']."</a>→";
}
return substr($send_back,0,strlen($send_back)-7);
}
} |
вызов echo centr_page::get_parent_kat($kategory,$kat_array);
ф-ция работает правильно,если вместо ретёрна поставить эхо то выведет всё как надо,но мне по условиям надо встроить в уже существующую разметку результат работы ф-ции,а оно выносит за её пределы,если вывалить эхом а не ретёрном почему-то.
врубил показ ошибок-ошибок нет.такое ощущение что оно возвращает,но возвращает пустую строку.
ощем,где я туплю?
|
|
Повернутися до початку |
|
 |
sanitar лентяй

Статус: Offline Зареєстрований: 29.11.2005 Повідомлення: 11632 Звідки: Киев Моє авто: 968м
|
Додано: 02 Липень 2012 02:43 Заголовок повідомлення: |
|
|
блин,а всего-то надо было вынести return из-под if'a 
|
|
Повернутися до початку |
|
 |
|