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

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

  • mario

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

    Spritz 21 января 2010 г. 20:14

    Приветы :)
    В общем суть следующая, в силу моего плохого понимания ООП, точнее малого опыта… Встал следующий вопрос.
    Как правильно реализовать класс типа "Блог", "Страница", "Каталог" и прочее…
    Опишу как я хочу делать и делаю на примере модуля "Страница":
    class Page {
    public function getPageName ($id) {
    //взять имя страницы
    }
    public function getPageUrl ($id) {
    //взять адрес
    }
    public function getPageTitle ($id) {
    //взять тайтл
    }
    public function getPageKeyword ($id) {
    //взять ключевики
    }
    public function getPageDescript ($id) {
    //взять описание
    }
    public function getPagePath ($id) {
    //взять путь
    }
    public function getPageState ($id) {
    //взять состояние
    }
    public function getPageModules ($id) {
    //взять модули страницы
    }
    public function getPageTreeChildren ($id) {
    //взять потомков
    }
    public function getPageTreeParent ($id) {
    //взять родителя
    }
    public function setPageName ($id, $name) {
    //установить имя страницы
    }
    public function setPageUrl ($id, $url) {
    //установить адрес страницы
    }
    public function setPageTpl ($id, $tpl_id) {
    //установить шаблон
    }
    public function setPageTitle ($id, $title) {
    //установить тайтл
    }
    public function setPageKeyword ($id, $keyword) {
    //установить ключевики
    }
    public function setPageDescript ($id, $descript) {
    //установить описание
    }
    public function setPageState ($id, $state) {
    //установить состояние: 0-выкл, 1-вкл.
    }
    public function addPage () {
    //добавить страницу
    }
    public function deletePage () {
    //удалить страницу
    }
    public function editPage () {
    //редактировать страницу
    }
    }

    специально привел такое большое количество, что бы была ясна ситуация…
    в общем для меня кажется что это сильно много гетеров и сетеров :)
    Я думаю что я что то не так понимаю… Или же это правильно?
    Может ли кто показать пример как вы это реализовываете?
    PS спасибо за внимание.
    Спустя 61 сек.
    у всех подглюкивает пыха, на загрузку страниц?
  • phpdude

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

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

    ух ебанутся, причем тут ооп?
    Сапожник без сапог
  • mario

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

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


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

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

    Spritz 21 января 2010 г. 20:29, спустя 5 минут 11 секунд


    ух ебанутся, причем тут ооп?
    покажи простой пример ООП :)
    только не на выдуманных классах и методах
    а на реальных и достаточно понятных :)
  • NRG

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

    Spritz 21 января 2010 г. 20:36, спустя 7 минут 17 секунд

    mario, что такое класс Page ?
    ты сам на пальцах можешь обьяснить к какой сущности он приадлежит ? (блок, модель, контроллер)

    у тебя в нем походу сборище всего…. а так неправильно..
  • artoodetoo

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

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

    Зачем сразу "ошибка"? Воспрос в том, что называть "объектным программированием". Моё IMHO: ООП это подход от «цели к средствам».
    В твоём случае бОльшая часть методов нужна только на стадии формирования страницы (View). Скажи пожалуйста, твой класс Page это класс контроллера или представления?
    Спустя 34 сек.
    NRG опередил :) меньше букв — первый нах
    ιιlllιlllι унц-унц
  • phpdude

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

    Spritz 21 января 2010 г. 20:49, спустя 10 минут 46 секунд

    только не на выдуманных классах и методах
    я хоть раз на выдуманныз показывал?) я вроде всегда "жизненые ситуации привожу"
    Сапожник без сапог
  • Trej Gun

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

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

    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};
       }
    }



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

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

    Spritz 21 января 2010 г. 20:57, спустя 7 минут 6 секунд

    CTAPbIu_MABP, не в курсе "во сколько раз" медленнее работают магич методы по сравнению с прямым вызовом?
    Сапожник без сапог
  • kostyl

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

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


    CTAPbIu_MABP, не в курсе "во сколько раз" медленнее работают магич методы по сравнению с прямым вызовом?

    в немного, а ты будешь считать сколько ты раз в проекте делаешь вызовов через magic ? просто интересно ))
  • mario

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

    Spritz 21 января 2010 г. 21:20, спустя 9 минут 18 секунд

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

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

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

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

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



    CTAPbIu_MABP, не в курсе "во сколько раз" медленнее работают магич методы по сравнению с прямым вызовом?

    в немного, а ты будешь считать сколько ты раз в проекте делаешь вызовов через magic ? просто интересно ))
    юморист? )

    я про обычное поведение скриптов



    …. быдлокод ….
    foreach($dbitems as $item)
    {
        … biidlocode …
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        $tpl->lala = $item['xxx'];
        bidlocode ….
    }
    …. быдлокод ….


    ну и это еще разок умножить на for какой нить глобальный, ведь быдлокод :)

    ну это так, пшик :)
    Спустя 32 сек.


    CTAPbIu_MABP, не в курсе "во сколько раз" медленнее работают магич методы по сравнению с прямым вызовом?

    в немного, а ты будешь считать сколько ты раз в проекте делаешь вызовов через magic ? просто интересно ))
    а пруфлинк и данные?
    Сапожник без сапог
  • mario

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

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

    давайте сейчас не будем спорить о производительности? На данной стадии это бессмысленно.
  • phpdude

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

    Spritz 21 января 2010 г. 21:23, спустя 40 секунд

    пошел поработаю, полдня пропиздел)
    Сапожник без сапог
  • mario

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

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


    пошел поработаю, полдня пропиздел)
    :) спасибо дуд:)
    Спустя 82 сек.
    NRG, artoodetoo, CTAPbIu_MABP, собрались те самые люди на которых я и рассчитывал :))) надеюсь вы не против? ;)
    phpdude, дуд ахуенен, но только не тогда когда дело доходит до просвещения знаний :)

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