За последние 24 часа нас посетили 52609 программистов и 1801 робот. Сейчас ищет 1601 программист ...

Father_class::function

Тема в разделе "PHP для новичков", создана пользователем Puaris83, 1 янв 2015.

  1. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Я в отчаянии...
    <?php
    class A {
    function example() {
    echo "Это первоначальная функция A::example().<br>";
    }
    }
    class B extends A {
    function example() {
    echo "Это переопределенная функция B::example().<br>";
    A::example();
    Как можно присвоить переменной $tut= A::example();?????
    }
    }
    A::example();
    $b = new B;
    $b->example();
    ?>
    Как можно присвоить переменной родительский метод внутри дочернего класса $tut= A::example();? или хоть где посмотреть доходчиво?
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    parent::example()
     
  3. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    $f=parent::example() ничего не присвоит, а как правильно?
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    блин, ну ты мануал-то прочитал?))))

    смотри, всё просто (если я задачу твою понял). делаем класс А:
    Код (PHP):
    1. class A {
    2.   function example() { // тут базовый метод объявляется.
    3.     echo "Это первоначальная функция A::example().<br>";
    4.   }
    5. }
    наследуем классом Б класс А:
    Код (PHP):
    1. class B extends A {
    2.   function example() { // тут идет переопределение базового метода. однако инкапсуляция в ООП позволяет потомку обращаться к доступным методам и свойствам родительского класса.
    3.    echo "Это переопределенная функция B::example().<br>";
    4.    parent::example(); // обращаемся к родительскому методу
    5.   }
    6. }
    выполняем:
    Код (PHP):
    1. $b=new B();
    2. $b->example(); // должен вывести сначала Б а потом А    
    ошибки в твоем коде:
    тут ты обращаешься к статическому методу класса А, но этот метод не статический и ты должен получать соответствующую ошибку
    и внутри переопределенного метода ты совершаешь ту же ошибку.
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Ganzal раздобрел, даже полные примеры приводит.
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    VLK это не новогоднее чудо)))) он просто еще не успел признаков неадекватности проявить)))))

    Добавлено спустя 45 секунд:
    ну и я же пожелал старичкам терпения в общении с новичками)))
     
  7. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Я наверно не верно спрашиваю.
    public function не помогает.А почему если писать return то ничего, а если echo то печатает результат, но мне надо во втором классе доработать полученный результат первой функции.
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну ты тогда не эхо делай в методе а ретёрн. а уже выше (в нестинге кода) делай эхо
    Код (PHP):
    1. class A{function e(){return 'AAA';}}
    2. class B extends A {funciton e(){return 'BBB'.parent::e();}
    3. $a = new A();
    4. echo $a->e();// AAA
    5. $b = new B();
    6. echo $b->e(); // BBBAAA    
    @2015-0101-1422 FIX поправил пропущенные echo
     
  9. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
     
  10. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    можно, присвой. в чем проблема-то?

    зы: я прошлый листинг поправил если чо
     
  11. Puaris83

    Puaris83 Новичок

    С нами с:
    1 янв 2015
    Сообщения:
    14
    Симпатии:
    0
    Ты волшебник, пока с тобой не поговорил не работало.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а бывает такое, да
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Вообще, такой код вроде тоже корректно работает:
    Код (PHP):
    1. <?php
    2. class A {function ff(){echo "A";} }
    3. class B extends A {function ff() {echo "B";}}
    4. class C extends B {function ff() {A::ff(); echo "c";}}
    5.  
    6. $c = new C;
    7. $c->ff();
    8. ?>
     
  14. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    mkramer, да, работает. но я отталкивался от того что он в main() писал а не в переопределенном методе.