Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема вызова класса из другого класса PHP

42K
25 августа 2010 года
vathsven
30 / / 11.11.2009
У меня 3 класса расширяются по цепочке путем: class2 extends class1, class3 extends class2. Но из последнего 3-го класса не работает метод 2-го класса, который в свою очередь обращается к методам 1-го класса. Какие пути решения проблемы ?
285
25 августа 2010 года
Romik
479 / / 24.11.2002
Каким образом идёт вызов class2.method и class1.method из class3.method? Какова область видимости методов?
563
25 августа 2010 года
MrLinker
249 / / 17.09.2006
Использовать parent и проверить модификаторы доступа.
42K
25 августа 2010 года
vathsven
30 / / 11.11.2009
Цитата: Romik
Каким образом идёт вызов class2.method и class1.method из class3.method? Какова область видимости методов?


Области видимости нигде не выставлены, статических методов тоже нет. Из 3-го класса вызываю метод 2-го путем $this->lang('VARIABLE'). Ошибок не пишет, ничего не отдает.

563
25 августа 2010 года
MrLinker
249 / / 17.09.2006
Я же написал, используйте ключевое слово parent:
Код:
class First
{
    public function Hello()
    {
        echo 'Hello from First class!<br/>';
    }
}

class Second extends First
{
    public function Hello()
    {
        echo 'Hello from Second class!<br/>';
        parent::Hello();
    }
}

class Third extends Second
{
    public function Hello()
    {
        echo 'Hello from Third class!<br/>';
    }
   
    public function HelloFromSecond()
    {
        parent::Hello();
    }
}

$obj = new Third();
$obj->Hello();
$obj->HelloFromSecond();


Выведет:
Hello from Third class!
Hello from Second class!
Hello from First class!
42K
26 августа 2010 года
vathsven
30 / / 11.11.2009
Цитата: MrLinker
Я же написал, используйте ключевое слово parent:
Код:
class First
{
    public function Hello()
    {
        echo 'Hello from First class!<br/>';
    }
}

class Second extends First
{
    public function Hello()
    {
        echo 'Hello from Second class!<br/>';
        parent::Hello();
    }
}

class Third extends Second
{
    public function Hello()
    {
        echo 'Hello from Third class!<br/>';
    }
   
    public function HelloFromSecond()
    {
        parent::Hello();
    }
}

$obj = new Third();
$obj->Hello();
$obj->HelloFromSecond();


Выведет:
Hello from Third class!
Hello from Second class!
Hello from First class!



Вызывая метод 3-го класса, он обращается ко 2-му. 2-й обращается к методам 1-го и отдает ему массив. 3-й разбирает массив и отдает html. Parent не срабатывает. И если я создаю в 3-м классе объект 2-го тоже не работает.

8
11 сентября 2010 года
mfender
3.5K / / 15.06.2005
Цитата: vathsven
Вызывая метод 3-го класса, он обращается ко 2-му. 2-й обращается к методам 1-го и отдает ему массив. 3-й разбирает массив и отдает html. Parent не срабатывает. И если я создаю в 3-м классе объект 2-го тоже не работает.


такого не бывает, как и телепатов. Обоснуй, вобщем, как это так "parent не срабатывает". не для того его сочиняли, чтобы "не срабатывал". Вобщем, без кода не понятно, что там не срабатывает.

15
21 сентября 2010 года
shaelf
2.7K / / 04.05.2005
Приведи кусок кода.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог