ФорумПрограммированиеPHP для идиотовPHP и ООП → непонятки с ООП

непонятки с ООП

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 21:28, спустя 2 минуты 3 секунды

    phpdude, дуд ахуенен, но только не тогда когда дело доходит до просвещения знаний :)
    эм … нихуя се предъявы оООоОоОООООоОооО

    я в ахе оООоОооООоОо пыщпыщпыпшшпыщ1111пщщыыщ111
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 21:31, спустя 3 минуты 42 секунды


    mario,



    class A{
       private $id;
       private $description;
       public function setID ($id) {
           $this->id = $id;
       }
       public function __call($name){ // name=getDescription
           $var = strtolower(substr($name,0,2));
           return this->{$var};
       }
    }



    я думаю ход мысли понятен

    тут кое что начинает проясняться
    private $id - потому что это внутренняя переменная, и ее нет необходимости менять.
    function setID ($id) - тоже понятно, устанавливаем id страницы.
    public function __call($name){ // name=getDescription
           $var = strtolower(substr($name,0,2));
           return this->{$var};
       }

    уже не пойму, для чего это? // name=getDescription - а тут уже вообще не могу понять… :( Почему имя страницы равняется дескрипшину?
    Спустя 103 сек.

    phpdude, дуд ахуенен, но только не тогда когда дело доходит до просвещения знаний :)
    эм … нихуя се предъявы оООоОоОООООоОооО

    я в ахе оООоОооООоОо пыщпыщпыпшшпыщ1111пщщыыщ111
    это не предъява, и не как не говорит о том что ты "нихуя нешариш" или "нихуя не умеешь учить" и прочее. А говорит о том что тебе это не нравиться, тебе нравиться порассуждать над чем то более высшем: производительность, архитектура и прочее :)
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 21:45, спустя 13 минут 39 секунд

    Почему имя страницы равняется дескрипшину

    а ты конкретнее можешь спросит, а то то то спрашиваешь (ёб аж три), то это.

    phpdude
    данные утеряны, запомнилось только то, что не надо заморачиваться над этим, если не пихать это во все объекты, ибо один запрос к БД сожрёт все что хочешь и закусит еще…
    кстати что лень самому затестить?
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 21:48, спустя 2 минуты 56 секунд

    kostyl, ну из примера (где коммент) мавра, я понял что переменная $name это есть метод getDescription
    Спустя 38 сек.
    только я теперь смысл не пойму?
    А точнее я понимаю, что я не правильно понимаю… :)
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 21:50, спустя 1 минуту 56 секунд

    Ок, Page — это контроллер. Публичные методы делаются чтобы какой-то другой объект мог к ним обратиться. Ты расчитываешь, что Представление будет вызывать методы вроде $page->getPageTitle($id) ??? Как-то это необычно :) Скорее сам контроллер передаст $pageTitle в Представление через какие-то параметры.
    Контроллер знает о Представлении. Представление ничего не знает о Контроллере — вот как-то так должно быть.
    ιιlllιlllι унц-унц
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 21:55, спустя 5 минут 23 секунды

    mario
    я так понял, что тебя смущаем много методов в твоем классе? да?
    если смущает то попробуй разбить класс на несколько, и не надо ничего говорить, разбей и напиши сюда
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 21:58, спустя 2 минуты 53 секунды


    Ок, Page — это контроллер. Публичные методы делаются чтобы какой-то другой объект мог к ним обратиться. Ты расчитываешь, что Представление будет вызывать методы вроде $page->getPageTitle($id) ??? Как-то это необычно :) Скорее сам контроллер передаст $pageTitle в Представление через какие-то параметры.
    Контроллер знает о Представлении. Представление ничего не знает о Контроллере — вот как-то так должно быть.
    ок, мне нужно обратьтся из другого класса за именем страницы (getPageName). Если он не будет публичный я этого не сделаю… вот из за чего поставил публичность.
    Спустя 40 сек.

    mario
    я так понял, что тебя смущаем много методов в твоем классе? да?
    если смущает то попробуй разбить класс на несколько, и не надо ничего говорить, разбей и напиши сюда
    я еще не настолько понимаю ООП, что бы говорить что меня смущает а что нет… и как бы вот и спрашиваю…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 22:22, спустя 24 минуты 27 секунд

    mario, короче выбесил ты меня и должен мне 40 минут жизненного времени.

    прикрепил ТЕБЕ УЧЕБНОЕ ПОСОБИЕ.

    1. test.rar (82)
    Сапожник без сапог
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 22:33, спустя 10 минут 29 секунд


    NRG, artoodetoo, это класс контроллера, модель не выношу отдельно (не знаю почему).
    NRG, artoodetoo, ну допустим метод getPageName вытаскивает из базы данных имя страницы и передает его View
    PS все методы создавались из того побуждения что, читал во многих источниках нужно представлять объект как реальный, и вот я и описал все реальные функции объекта "Страница".

    mario, что такое класс Page   ?

    класс Page это класс страниц (формирование, создание, удаление, редактирование) все остальные гетеры вспомогательные, на тот случай что они в любом случае потребуются.
    mario, послушай,
    формирование относится к логике блока,
    создание, удаление, редактирование - к логике модели.

    а ты обзываешь его контроллером.
    тебе не кажется случайно, что здесь чотто не так ?   =)

    раз пошла такая пруха, то ты уже не правильно представил себе архитектуру…
    лично у меня с понятием пейдж ассоциируется блок, а блок не должен знать логику модели(создание, удаление, редактирование)

    у меня на первых порах изучения ооп тоже был прикол, я создал класс Email, он как и твой умел все =)
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 22:34, спустя 46 секунд


    mario, короче выбесил ты меня и должен мне 40 минут жизненного времени.

    прикрепил ТЕБЕ УЧЕБНОЕ ПОСОБИЕ.


    спасибо! :)
    спасибо за то что потратил свои личные 40 минут. Уже читаю
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 22:38, спустя 4 минуты 13 секунд

    mario, ну и я там сильно не разносил в контроллер и модель, по хорошему конечно можно разнести :)
    Спустя 13 сек.
    нужно)

    но время - деньги, сам понимаешь
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 22:45, спустя 7 минут 10 секунд


    mario, послушай,
    формирование относится к логике блока,
    создание, удаление, редактирование - к логике модели.

    а ты обзываешь его контроллером.
    тебе не кажется случайно, что здесь чотто не так ?   =)

    раз пошла такая пруха, то ты уже не правильно представил себе архитектуру…
    лично у меня с понятием пейдж ассоциируется блок, а блок не должен знать логику модели(создание, удаление, редактирование)

    у меня на первых порах изучения ооп тоже был прикол, я создал класс Email, он как и твой умел все =)

    Спасибо за внимание.
    1)Блок - это у тебя View? - отвечает за отображение обработанных данных?
    2)Модель - предоставляет нам данные из источника (БД, файлы и прочее)
    3) Контроллер - отвечает за логику данных, оповещает модели и вид(блок, view) о том что нужно обновиться (грубо говоря)
    Спустя 40 сек.
    вот тут я вижу разногласия… и думаю что я понимаю не правильно?
    Спустя 13 сек.
    щас буду рисовать.  
    Спустя 146 сек.
    вот например метод getPageName вытаскивает из модели имя страницы и отдает строку с этим именем, другому классу.
    Это что является модель, в твоем понимании?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 23:00, спустя 15 минут 2 секунды

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 21 января 2010 г. 23:07, спустя 6 минут 46 секунд

    kostyl, всегда вот это убивало

    #
    //Приводим переменные к нижнему регистру

    #
    $ActionName = Str::Strtolower($ActionName);

    #
    $ModuleName = Str::Strtolower($ModuleName);


    чем php.net/strtolower не устроил?
    Сапожник без сапог
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 23:13, спустя 5 минут 58 секунд

    а вот эти строчки всяким умным дядькам не надо смотреть ))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!