За последние 24 часа нас посетили 63194 программиста и 1737 роботов. Сейчас ищут 849 программистов ...

Дополнение родительского класса несколькими дочерними

Тема в разделе "PHP для новичков", создана пользователем WarGot, 30 июл 2011.

  1. WarGot

    WarGot Активный пользователь

    С нами с:
    8 янв 2010
    Сообщения:
    55
    Симпатии:
    0
    Возникла проблема, к сожалению не знаю как её точно сформулировать, поэтому буду благодарен даже ссылке на поиск.
    Итак, есть родительский класс Parent, также есть два или больше класса которые должны расширять функционал класса Parent. Проблема в том что объявляя новые классы получаю только результаты работы функций последнего и родителя, а хотелось бы чтобы были функции родителя Parent и результаты работы функций всех дочерних классов.
    Код (Text):
    1.  
    2. <?php
    3. class Parents{
    4.     function title(){
    5.         echo "Parent title<br>";
    6.     }
    7.    
    8.     function second_func(){
    9.         echo "Second func<br>";
    10.     }
    11. }
    12.  
    13. class Child1 extends Parents{
    14.     function title(){
    15.         echo "New title<br>";
    16.     }
    17. }
    18.  
    19. class Child2 extends Parents{
    20.     function second_func(){
    21.         echo "New second func<br>";
    22.     }
    23. }
    24.  
    25. $test = new Parents;
    26. $test = new Child1;
    27. $test = new Child2;
    28. $test->title();
    29. $test->second_func();
    30. ?>
    Т.е. на выходе хотел бы увидеть New title результатом работы $test->title(). Т.е. как уже писал все функции родителя + результаты замещения функциями из дочерних классов.

    Объяснение наверное получилось бредовое, но как смог -)
     
  2. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    действительно нихрена непонятно. но может быть топикстартер имел в виду что-то вроде Декоратора или Адаптера?
    необязательно наследовать чтобы расширить. можно сделать "оболочку", а в ней обращаться к базовому объекту и/или другим оболочкам.
     
  4. WarGot

    WarGot Активный пользователь

    С нами с:
    8 янв 2010
    Сообщения:
    55
    Симпатии:
    0
    Есть базовый класс core который допустим хранит title страницы (Parent title) в функции core->title() и хранит какую-то вторую функцию second_func().
    Есть отдельный файл seo.php. В этом файле есть класс Child1 который должен заменить результат работы функции title из core->title своим значением. Допустим более качественным тайтлом для страницы.
    Есть ещё один файл child2.php у котором есть класс Child2 который должен заменить вторую функцию (second_func() )из самого первого файла.
    Когда подключаю оба файла то получаю изменение работы только функции second_func() которую менял второй (последний) файл, а вот работа title() отдаёт результат из базового класса, а не из seo.php.