За последние 24 часа нас посетили 15634 программиста и 1641 робот. Сейчас ищут 753 программиста ...

Factory

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

  1. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я про конкретный метод спрашиваю, а не про рефлекшн вообще. =)
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    а я вроде как по теме писал: про "умный конструктор объектов".

    а где может понадобиться hujnane:getEndLine -- да х* его знает! ты таки зачем это спрашиваешь?
     
  3. igordata

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

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

    Т.е. кто-то посчитал это важным, а кто-то согласился. Соотв. они знают чего-то такое, чего я не знаю. Вероятно, есть какой-то приемчик, который делает финт ушами и происходит чудо.

    я хочу знать что делает тот приемчик, ради которого решили вынести такой механизм вовне. Ибо пхп умеет распасивать текст и отдавать его кусками своих инструкций. Т.е. буде у кого желание единократно узнать где там класс заканчивается - это сделать не сложно. А вот раз вынесли в отдельный метод, значит часто пользуются...
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Для этого он и потребовался отслеживать классы, методы и т.д. =)
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    igordata, я могу вообразить такое применение: если есть допустим какая-то отладочная панель, которая выдает стек вызовов. В ней будут упоминаться классы и методы. Чтобы по требованию "покажи писю нужный класс" лишнего не выдать, было бы удобно воспользоваться этой фигней. Ну чисто для эстетов штучка.
     
  6. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Чего-то мне кажется, что рассуждение было таким: "
    - Парни, у нас мозговой штурм - что нам забубенить в рефлексию.
    - Давайте сделаем вывод номера начальной и конечной строки класса!111!
    - Нафига?
    - Ну я просто предложил..."
    И тут говнокод) (хотя на "говнокод" можно ответить "сначала добейся")
     
  7. qwert_ukg

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

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    Добавлено спустя 1 минуту 32 секунды:
    а вообще есть такое понятие - метапрограммирование, очень крутая вещь, но не для пхп)
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    На php тоже можно делать программы exe для windows.
    Да и вообще частично он все-же тоже относится.
     
  9. qwert_ukg

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

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    вот такая интересная штука получилась
    Код (Text):
    1.  
    2. protected function createObject($class, $params = [])
    3. {
    4.     $reflection = new ReflectionClass($class);
    5.  
    6.     return $reflection->newInstanceArgs($params);
    7. }
    8.  
    9. protected function useMethod($object, $method, $params = [])
    10. {
    11.     call_user_func_array([$object, $method], $params);
    12.  
    13.     return $object;
    14. }
    15.  
    16. protected function getProperty($object, $property)
    17. {
    18.     return $object->$property;
    19. }
    Добавлено спустя 7 минут 10 секунд:
    а если еще такую фишечку добавить
    Код (Text):
    1.  
    2. public static function make()
    3. {
    4.     return new self();
    5. }
     
  10. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Только учтите, ниже новых версий это не будет работать. =)
     
  11. qwert_ukg

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

    С нами с:
    20 июл 2010
    Сообщения:
    387
    Симпатии:
    0
    Адрес:
    Алмата
    ну я вообще то имел ввиду языки "все объект" типо рельсов и питона.
    но и на пхп встречаются некие вариации этого подхода

    Добавлено спустя 42 секунды:
    а мы уже во всю 5.4