За последние 24 часа нас посетили 24464 программиста и 1656 роботов. Сейчас ищут 922 программиста ...

Вопрос по ооп

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

  1. kowapos

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

    С нами с:
    18 янв 2013
    Сообщения:
    120
    Симпатии:
    0
    Здравствуйте. Подскажите, как должен выглядеть класс, что бы работала такая конструкция

    Код (Text):
    1.  
    2. $obj = new ClassName;
    3. $obj->getMethod()->someElse;
    обратите внимание на $obj->getMethod()->someElse; после метода идет обращение к свойству. покажите как должен выглядеть класс при таком раскладе. и вообще, не понимаю зачем это. вообщем, буду рад ссылкам и толкованием, спасибо )
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    если я правильно помню то метод getMethod должен возвращать объект класса
    т.е.
    Код (Text):
    1. function getMethod {
    2. return $this;
    3. }
    а в классе есть открытое свойство someElse

    кстати, не обязательно он должен возвращать объект своего класса, может быть и какого то другого, у которого есть свойство someElse

    вот короче:
    Код (PHP):
    1. class a {
    2. public $val = 'hello';
    3. }
    4.  
    5. class b {
    6.  
    7. public function my_method() {
    8. $obj = new a();
    9. return $obj;
    10. }
    11.  
    12. }
    13.  
    14. $bbb = new b();
    15.  
    16. echo $bbb->my_method()->val; 
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Именно так. Я бы вообще убрал первую половину поста, она только запутает автора. Второй половины достаточно, все правильно расписал.
     
  4. krocos

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

    С нами с:
    30 июн 2014
    Сообщения:
    10
    Симпатии:
    0
    Код (Text):
    1.  
    2. <?php
    3.  
    4. class AnotherClass
    5. {
    6.     public $someElse;
    7. }
    8.  
    9. class ClassName
    10. {
    11.     /** @var AnotherClass */
    12.     private $anotherClassVar;
    13.    
    14.     public function __construct()
    15.     {
    16.         $this->anotherClassVar = new AnotherClass();
    17.     }
    18.    
    19.     public function getMethod()
    20.     {
    21.         return $this->anotherClassVar;
    22.     }
    23. }
    24.  
    25. $obj = new ClassName;
    26. $obj->getMethod()->someElse;