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

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

  • mario

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

    Spritz Янв. 21, 2010, 8: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, 8:22 п.п., спустя 8 минут 2 секунды

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

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

    Spritz Янв. 21, 2010, 8:24 п.п., спустя 1 минуту 3 секунды


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

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

    Spritz Янв. 21, 2010, 8:29 п.п., спустя 5 минут 11 секунд


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

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

    Spritz Янв. 21, 2010, 8:36 п.п., спустя 7 минут 17 секунд

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

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

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

    Spritz Янв. 21, 2010, 8:38 п.п., спустя 2 минуты 13 секунд

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

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

    Spritz Янв. 21, 2010, 8:49 п.п., спустя 10 минут 46 секунд

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

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

    Spritz Янв. 21, 2010, 8: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, 8:57 п.п., спустя 7 минут 6 секунд

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

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

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


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

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

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

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

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

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

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

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

    Spritz Янв. 21, 2010, 9: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, 9:22 п.п., спустя 1 минуту 34 секунды

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

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

    Spritz Янв. 21, 2010, 9:23 п.п., спустя 40 секунд

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

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

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


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

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