PHP4 и доступ к методам класса

s@nch0

Хочу всё знать
Дада, понимаю, PHP4 - это древность и т.д. Но случилось так, что нужно кое-что поправить на одном из проектов. Ессно переносить всё на PHP5 я не буду. Это не моя забота. Поэтому флуд на эту тему просьба не разводить.

И так, суть вопроса.
Есть к примеру класс и методы в нём:

class siteClass {

function func1() {
}

function func2() {
$this->func1();
}

}

Вызов func1() в func2() выдаёт ошибку: Fatal error: Call to undefined function...

Если сделать siteClass::func1();
То всё ок.

Так вот вопрос, это я чего-то не понимаю или в PHP4 действительно нельзя так вызывать методы одного класса в самом классе ?
 

s@nch0

Хочу всё знать
Разобрался.
Более детальное описание задачи.

Есть один класс - Class1 и есть второй Class2
Так вот в одном из методов класса Class2 вызывается метод из Class1. Этот вызов был сделан так Class1::Func1();
В самом же классе Class1 метод Func1() вызывал ещё метод Func2() из того же класса - вот так $this->Func2(); А т.к. в первоначальном этапе класс не был создан ( Class1::Func1(); ), то и лезли ошибки.

Сделал так

Class2 extends Class1 {
}

И всё заработало.
 

Вурдалак

Продвинутый новичок
Как дети в кубики играют? Там прилеплю, там приделаю, а отвалилось — выкину.
 

A1x

Новичок
s@nch0 лучше приводи полные примеры кода (но не очень длинные) а не его описания на словах ;)
 

s@nch0

Хочу всё знать
Вурдалак
Критика - это хорошо. А как лучше сделать ?
 

fixxxer

К.О.
Партнер клуба
Да какая разница php4 php5

не надо путать статические вызовы с обычными
 

Вурдалак

Продвинутый новичок
s@nch0, сильно зависит от ситуации. Какие сущности описывают Class1 и Class2? Просто мне так показалось (может быть несправедливо), что это совершенно два разных класса объектов.
 

s@nch0

Хочу всё знать
fixxxer
Да я не путал. Но на момент написания поста не до конца вник в суть проблемы. :)

Так как лучше решить проблему, как я или по другому как-то ?
 

AmdY

Пью пиво
Команда форума
s@nch0
поставь редактор с подсветкой синтаксиса, типа netbeans и форматируй код. ошибка где-то в оформлении, просто статический вызов не спас бы.
Вурдалак, спасибо, поправил.
 

s@nch0

Хочу всё знать
Вурдалак
Это приблуда по дёрганию статистики Яндекса через Яндекс.XML

Один из классов - это работа со списком сайтов, клиентами на эти сайты, ключевые слова и т.д. Второй класс - это как раз класс по выдиранию статистики из Яндекс.XML. По сути - да, разные классы объектов.

Но если я не сделаю extends, то тогда в самом Class1 при вызове метода в метода нужно будет писать вот так Class1::Func1(); А это имхо не совсем кошерно. %)
 

s@nch0

Хочу всё знать
AmdY
Мне так кажется, что если бы была ошибка где-то в оформлении, то выдавало бы другую ошибку, из разряла "Parse error"
 

AmdY

Пью пиво
Команда форума
s@nch0
сорри, не прочитал полностью, fixxxer всё верно сказал.
PHP:
$o = new siteClass();
$o->func1();
// либо
function func2() {
self::func1();
}
 

s@nch0

Хочу всё знать
Если я правильно понял, что вот это:

$o = new siteClass();
$o->func1();

нужно делать в Class2, может даже в самом метода Class2 ? %)
 
Сверху