Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Php5 разыменования объектов, которые возвращаются функциями.

  1. #1
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51

    Php5 разыменования объектов, которые возвращаются функциями.

    Подскажите пожалуйста у кого опыта по больше, стал изучать Smarty, в нём вот такой синтаксис $obj->getObj()->doSomething(). В гугле нарыл небольшой пример без подробного описания действий, пожалуйста объясните по подробней "природу" такого синтаксиса.

  2. #2
    Продвинутый
    Регистрация
    17.11.2006
    Сообщений
    6,976
    Записей в дневнике
    15
    Изображения
    533
    -> доступ к члену объекта, в данном случае к методам.
    первый у объекта $obj вызываете метод getObj() который возвращает другой объект у которого в свою очередь вызывается метод doSmth()

  3. #3
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51
    я извиняюсь, это метод одного объекта возвращает результат для использования методу другого объекта? грубо говоря. я правильно понимаю?

  4. #4
    Продвинутый
    Регистрация
    17.11.2006
    Сообщений
    6,976
    Записей в дневнике
    15
    Изображения
    533
    Нет, метод первого объекта, возвращает объект, и тут же сразу у него вызывается метод

    В общем это просто сокращенная запись следующего кода

    PHP код:
    $obj2 $obj->getObj();
    $obj2->doSomething() 

  5. #5
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51
    как то не укладывается в голове, нет ли примеров с подробным описанием? а как связывается метод первого объекта с методом объекта которого вернули и который вызвал этот метод? .......как всё запутано.....

  6. #6
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51
    или метод первого объекта содержит метод другого объекта, чей результат нужно вернуть? .....тут я уже начинаю гадать...

  7. #7
    Пользователь
    Регистрация
    07.06.2007
    Сообщений
    35
    Допустим есть 2 класса:

    PHP код:
    class obj1
    {
        function 
    helloWorld()
        {
            return 
    'Hello, World!<br>';
        }
    }
    class 
    obj2
    {
        private 
    $obj;
        function 
    __construct()
        {
            
    $this->obj = new obj1();
        }

        function 
    getObj()
        {
            return 
    $this->obj;
        }

    Пример клиентского кода:
    PHP код:
    $obj2 = new obj2();
    echo 
    $obj2->getObj()->helloWorld(); 
    Создается экземпляр класса obj2 в конструкторе которого создается экземпляр класса obj1.
    Для того, что бы обратится к методу helloWorld() сначала нужно получить доступ к объекту obj1, а так как он является закрытым, сделать это можно только с помощью метода getObj().
    Метод getObj() возвращает объект, а так как в php 5 поддерживается разименовывание объектов, возвращаемых из функций, то вы смело можете использовать следующею конструкцию: $obj2->getObj()->helloWorld(). По сути, если прищурится, то $obj2->getObj()->helloWorld() означает $obj2->obj1->helloWorld(), но вариант с obj1, работать не будет, так как obj1 является закрытым параметром.

  8. #8
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51
    Ой спасибо!!! Огромное при огромное при огромное спасибо!!!!

  9. #9
    Пользователь
    Регистрация
    16.02.2011
    Сообщений
    51
    если можно ссылочку почитать про такие приёмчики))

  10. #10
    Пользователь
    Регистрация
    07.06.2007
    Сообщений
    35
    Цитата Сообщение от Drop86 Посмотреть сообщение
    если можно ссылочку почитать про такие приёмчики))
    PHP:

    А из книжек советую следующие начать с
    OZON.ru - Книги |
    и
    OZON.ru - Книги | PHP. Объекты, шаблоны и методики программирования | Мэтт Зандстра | PHP: Objects, Patterns, and Practice | Купить книги: интернет-магазин / ISBN 978-5-8459-1689-1, 978-1-43-022925-4

    Если будут вопросы то задавай в этой ветке, с радостью отвечу!

Похожие темы

  1. Моржи - иногда они возвращаются....
    от GovNuke в разделе Просто общение
    Ответов: 38
    Последнее сообщение: 31.08.2008, 18:49
  2. Danger!!!!!! флудилко бандерлоги возвращаются!
    от Scr в разделе Просто общение
    Ответов: 84
    Последнее сообщение: 04.05.2008, 08:54
  3. -= «Мушкетеры» возвращаются на экраны! =-
    от Magnattt в разделе Просто общение
    Ответов: 4
    Последнее сообщение: 14.04.2008, 12:24
  4. Маски, которые мы носим....
    от Prosto K в разделе Просто общение
    Ответов: 62
    Последнее сообщение: 16.01.2008, 20:48

Рекомендуем

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  

SEO by vBSEO

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94