За последние 24 часа нас посетили 19299 программистов и 1635 роботов. Сейчас ищут 875 программистов ...

Обращение к методу через свойство

Тема в разделе "Прочие вопросы по PHP", создана пользователем Sprut, 11 сен 2013.

  1. Sprut

    Sprut Новичок

    С нами с:
    11 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте,
    Как правильно организовать структуру при которой

    $site = new Site();

    var_dump($site->user); // Будет отдавать скажем информацию о пользователе , а

    var_dump($site->user->company()); // Вернет информацию уже о компании этого юзера

    То есть как сделать что бы через свойство можно было обратится к методу?
     
  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    user должен быть экземпляром класса, в котором реализован метод company, только и всего.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    site::$user;
    $site->user();
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    лучше юзера в отдельный класс засунуть
     
  5. Sprut

    Sprut Новичок

    С нами с:
    11 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Спасибо, и правда все просто оказалось =)

    Добавлено спустя 6 минут 13 секунд:
    Честно говоря вообще не понял что вы имели ввиду
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в пхп из класса можно дернуть либо переменную, либо константу, либо функцию.
     
  7. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    дык а если переменная/свойство/поле класса является объектом, внутри которого можно дернуть функцию? :)
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я вот про это
     
  9. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    ну дык, если у user есть company(), то почему не вызвать именно так? В чем проблема? Во всем остальном ООП-мире это совершенно нормальное дело.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Добавлено спустя 30 секунд:
    по сути это должно быть истрактовано как обращение к константе. объек в константе жить не может в пхп.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    типо такого хочет замутить:
    $db->query()->fetchAll()
     
  12. Sprut

    Sprut Новичок

    С нами с:
    11 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    Да не хочу я это делать, Fell-x27 прекрасно меня понял и на 100% удовлетворил мой вопрос своим первым комментарием))
     
  13. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Народ придирается, что ты не указал $ перед user, мол не переменная, отоночо:)
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    пора завязывать со статикой ;)
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    почему?
     
  16. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Потому что $ используется только для доступа к статическим свойствам.
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прикольно. а как опознаются константы?
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Константы принадлежат к классу а не отдельным объектам, поэтому к ним доступ через ClassName::, изнутри соответственно self::
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    хитро!
     
  20. Sprut

    Sprut Новичок

    С нами с:
    11 сен 2013
    Сообщения:
    4
    Симпатии:
    0
    А я думал у меня когнитивный диссонанс =) не понимаю людей с 10 - 15к сообщений на php форуме)) Кстати к статическим свойствам тоже обращение только через :: . И не нужно называть методы функциями а свойства переменными, это для того и нужно что бы сразу было понятно о чем речь идет) но все равно всем спасибо. думаю можно закрывать тему.
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    В пхп границы зыбки. Конструктор это инициализатор, методы это такие функции, функции можно вызывать из переменных, а к переменным можно обращаться через имя содержащееся в другой переменной.
    По сути в этом сила языка.

    Вобщем велкам. Хорошо когда есть своя голова на плечах.