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

и опять MVC...

  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 1 августа 2008 г. 22:55, спустя 52 минуты 52 секунды

    Хорошо сказано. Только очень уж эмоционально.
    Ух, я тоже хоть и ничего серьезного пока не кодил, но придерживаюсь такой же структуры. Только делаю на классах, ибо удобно.
  • Sinkler

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

    Spritz 1 августа 2008 г. 23:01, спустя 6 минут 41 секунду

    killich, весьма оригинально ))
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 1 августа 2008 г. 23:35, спустя 33 минуты 45 секунд

    весьма оригинально? Где)))
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

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

    Spritz 2 августа 2008 г. 12:45, спустя 13 часов 10 минут 26 секунд

    ну и чем все вышесказаное отличаеться от



    class Controler {
    private $view;
    private $model;

    public function __constructor($view,$model){
    $this->view = $view;
    $this->model = $model;
    }

    public function show (){
    $stmt = $this->model->Prepare("SELECT * FROM table WHERE a=? and b=?");
    $stmt = $this->model->Execute($stmt,array($_GET['a'],$_GET['b']));
    $this->view->assign($stmt->fields);
    }
    }
    $с = new Controler($smarty,$adodb);
    $c->show();


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

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 4 августа 2008 г. 9:20, спустя 1 день 20 часов 34 минуты

    Не могу судить о приложении в целом, но могу предложить след. отличие:
    1. вновь SQL и прочий код в одном флаконе (файле)? По моим наблюдениям это уже давно считается не гуд.

    Позвольте уточнить, это контроллер какого то конкретного фрагмента приложения или нечто общее для создания прочих контроллеров?

    Прошу прощения за некомпетентность в таких вещах как смарти, просто мое нынешнее виденье построения приложения все больше ориентируется на руби рельсы. после ознакомления с идеями данного фреймворка я существенно потерял интерес к прочим подобным вещам, т.к в идеях рельс нашел ту логику которая мне близка и мною легко принимается.
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

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

    Spritz 4 августа 2008 г. 11:22, спустя 2 часа 1 минуту 38 секунд

    Позвольте уточнить

    просто за 2 минуты набросал класс, для демонстрации того что sql может быть в контролере и не нарушит мвц. и вообще ничего страшного в этом нет.

    я считаю что если вносить sql код  то выносить его надо в классы тоесть чтото вроде


    $db->action('select','*')->table('myTable')->where('1=1')->order('myColumn',asc)


    хотя если чесно я и это очень удобным не считаю


    class UserFactory{
    abstract public static function getUser($session){
    }
    }

    class MyUserFactory extend UserFactory{
    private $sql = "select * from users  where userid = ?";
    public static function getUser($session){
    $stmt = $this->model->Prepare($this->sql);
    $stmt = $this->model->Execute($stmt,$session);
    return new User($stmt->fields);
    }
    }

    class DashboardUserFactory extend MyUserFactory{
    private $avatar_sql = "select * from avatar  where userid = ?";
    private $post_sql = "select * from posts  where userid = ? order by date desc limit 5";
    public static function getUser($session){
    $user = parent::getUser($session)
    $stmt = $this->model->Prepare($this->avatar_sql);
    $stmt = $this->model->Execute($stmt,$session);
    $user->setAvatar($stmt->fields);
    $stmt = $this->model->Prepare($this->avatar_sql);
    $stmt = $this->model->Execute($stmt,$session);
    $user->setLatestPost($stmt->fields)
    return $user;
    }
    }



    вот так пожалуй будет правельнее
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 4 августа 2008 г. 12:23, спустя 1 час 50 секунд


    $db->action('select','*')->table('myTable')->where('1=1')->order('myColumn',asc)


    Направление правильное, я думаю. в сторону абстракции это всегда хорошо. Вид не очень презентабельный, но так верно.

    Не сомневаюсь в компетентности Мавра, но если честно конструкция с Абстрактами меня несколько смущает. На пхп ушел с си, а на си вкусил все радости жизни включая и динамические структуры и ооп в довольно жесткой теоретической форме и, считаю, на неплохом практическом уровне. Отсюда к Мавру и любителям ООП конструкций вопрос (без наезда 100% и критики, просто вопрос…. даже больше тема для дискуссии):

    Использование любого средства (инструмента) вызвано необходимостью в его применении. Как можно более корректно с точки зрения ООП принципа расскажите чем вызвано наличие абстрактных функций в языках программирования. Что они дают. Выразите своими словами причину использования абстрактных функций в своем приложении, да так, что бы оппоненту было как можно труднее оспорить вашу позицию.

    Ну не могу я понять зачем вам здесь абстракты. ООП ради ООП не жизнеспособно. Надеюсь что кто то возьмется защитить свое решение.

    ЗЫ: извините за преподские замашки. учителька я. какой эсть :)
    ЗЫЫ: В данном посте речь идет исключительно о вопросах концепции
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • NRG

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

    Spritz 4 августа 2008 г. 13:30, спустя 1 час 7 минут 46 секунд

    Я не смог решить самостоятельно проблему полной абстракции от БД на ПХП


    killich, а почему вы так вцепились в Руби ?
    почему не юзаете другие фреймворки ?
    если только из-за обьектной модели бд то, там в разделе SQL Адводр перечислял многие известные ОРМ…. попробовали бы их….
  • adw0rd

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

    Spritz 4 августа 2008 г. 13:38, спустя 7 минут 14 секунд



    $db->action('select','*')->table('myTable')->where('1=1')->order('myColumn',asc)


    хотя если чесно я и это очень удобным не считаю


    Да… согласен, нифига не удобно
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • adw0rd

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

    Spritz 4 августа 2008 г. 13:43, спустя 5 минут 12 секунд


    killich, а почему вы так вцепились в Руби ?
    почему не юзаете другие фреймворки ?


    Ну начнем с того что Руби не фреймворк. Меня в последнее время очень стал интересовать руби, вот если бы кто-нибудь порекомендовал хорошую литературу про него, был бы премного благодарен! Желательно на русском, и без машинного перевода, на первый раз хочу по русски. :)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • NRG

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

    Spritz 4 августа 2008 г. 14:09, спустя 26 минут 29 секунд

    Ну начнем с того что Руби не фреймворк

    да, сори, ступил…
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 4 августа 2008 г. 14:25, спустя 16 минут 13 секунд

    почему Руби (точнее рельсы Руби)? >:0) очень просто. Я не программист. Я не зарабатываю денег программированием. Это мое хобби. Оттого имею возможность в удовольствие этим заниматься. У меня есть Гуру - человек немного закрытый от мира но ОЧЕНЬ много знающий. Год назад он дал мне один свой проект - простейший форум на пхп. Я ковырялся в нем месяца два. Потом стал удалять то что мне не нравилось, через какое то время переписал сам то что удалил, но что мне вдруг понадобилось (в процессе переосмысления). В конце концов я пришел к тому на основе чего пытаюсь делать маленькие экспериментальные проекты. С месяц назад скачал книжку Разработка на Руби рельсах. Вся хохма в том, что я сделал основу - простейшую аналогию рельс (без скафолдинга и скриптов генерации и прочих наворотов). Т.е. общие принципы построения приложения + реализация некоторых функций. Не удивительно, что мне так нравятся рельсы - я сам к ним пришел - это продолжение того, что я делал. Вы типа изобретали машину, придумали все что в ней должно быть, а потом узнали ее уже изобрели! И вы в восторге, и вы смеетесь и счастливы.
    Именно поэтому следующим чем я буду заниматься - учить рельсы. Тем более что спрос на них растет экспотенциально.
    Еще три года назад Гуру сказал - учи руби и рельсы! это будущее…. как всегда не послушал ученик Мастера….
    Я верю Гуру в программировании, его опыту.
    За 5 лет у меня небыло повода в этом усомниться. его мнение для меня догма :)
    Фича в том, что движок форума был написан специально для меня, т.е. он рассчитывал, что я все же приду к рельсам через пхп. Хех! вот как людей учить надо!
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

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

    Spritz 4 августа 2008 г. 14:35, спустя 9 минут 7 секунд

    Да… согласен, нифига не удобно


    удобно пока не появляються join, if-then и прочая лабуда
    ну вобщем дело вкуса и привычки

    касатально вопроса об абстракции


    interface MyInterface{
    public function firstAbstractFunc();
    public function secondAbstractFunc();
    }

    // абстрактный класс
    class AbstractClass implements MyInterface{
    public function realFunc(){
    }
    }

    // реальный класс
    class RealClass extends AbstractClass{
    public function firstAbstractFunc(){
    /* real function */
    }
    public function secondAbstractFunc(){
    /* real function */
    }
    }



    MyInterface - задает функции которые должны быть
    AbstractClass - это некое промежуточное звено между интерфейсом и реальным классом его задача создать функцию которая с большой вероятностью будет во всех производных классах, проще говоря чтобы не разводить копипаст я вынес часть кода в абстрактный класс, при этом я не могу создать случайно его экземпляр и могу перезаписать эту функцию если чтото измениться
    RealClass - ну а это уже собственно имплементация интерфейса
  • NRG

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

    Spritz 4 августа 2008 г. 14:37, спустя 2 минуты 52 секунды

    Не в огорчение будет сказано, ничего против твоего Гуру не имею, но почему же он такой шарящий чувак не посоветовал учить что-то более мощнее и перспективнее ?
    Лично я считал и считаю что будущее больше за Джавой чем за рельсами…
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 4 августа 2008 г. 14:55, спустя 17 минут 41 секунду

    хех. джава? ничего не имею против ява. Если это были рельсы - значит для меня это было лучшим вариантом. Гуру не ошибается >:0) Гуру он вообще сверхчеловек…. его нет - это мое больное воображение >:0) Но должны же коты черт возьми во что нибудь верить….

    Ничего не имею вообще против какого либо фрейма, технологии, Била Гейтса, языка прогр. и цвета кожи. Однако, что там говорит русская мудрость? … на вкус и цвет? Java перспективна? Да однозначно! Рельсы? Несомненно. Будет ли такая же войта как Лин против Вин? …. а стоит ли? То что мы разные разве повод для войны?

    Рельсы и Руби на мой взгляд сейчас перспективны как никто. Оправдается ли это? Посмотрим что будет года через 2, когда новую платформу распробуют массы. Я не навязываю, не рекламирую - я делюсь впечатлениями - мне лично нравится. я нашел то что искал. Возможно небыло ничего другого…. возможно. появится - будет с чем сравнить. Но о более обсуждаемой открытой MVC основанной платформе я пока не слышал.
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru

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