За последние 24 часа нас посетил 58041 программист и 15875 роботов. Сейчас ищут 1479 программистов ...

Описать MVC

Тема в разделе "PHP для новичков", создана пользователем lolix, 1 ноя 2017.

  1. lolix

    lolix Новичок

    С нами с:
    5 май 2017
    Сообщения:
    30
    Симпатии:
    1
    Дратути Уважаемый!
    Можете ли вы поэтапно и кратко описать как писать код для MVC?
    Например:
    1.создать три папки index.php,m.php,v.php,c.php
    2......


    Я не прошу готовый код я хотел бы сам его написать а не переписывать чужой.
    Заранее благодарю!
     
  2. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    модель - это то что у вас с базой работает..
    есть таблица в базе members - сделайте класс member и работайте с этой таблицей.

    контроллер это то месте где ловите гет и пост запросы и вызываете модель что бы что то сделать с базой..

    представление это то - куда вы отправялете добро полученное в контроллере)

    структура директорий может быть такая

    model
    controller
    view
    index.php

    index.php - это единая точка входа..
    --- Добавлено ---
    да.. еще нужна папка куда роутинг положить можно будет.. конфиги..
     
    lolix нравится это.
  3. lolix

    lolix Новичок

    С нами с:
    5 май 2017
    Сообщения:
    30
    Симпатии:
    1
    Спасибо за такой точный ответ завтра с удовольствием приступлю к решению!
     
  4. lolix

    lolix Новичок

    С нами с:
    5 май 2017
    Сообщения:
    30
    Симпатии:
    1
    Я кстати пока ждал ответов написал немного кода MVC в моем(пока что ) поверхностном понимании,без подключения к базе данных и без ООП (тоесть просто написал так как примерно понимаю реализацию MVC чисто для себя).
    Не могли бы вы взглянуть одним глазком на код и сказать понимаю ли я вообще хотя бы ка-то структуру MVC или все что я написал и близко на это не похоже?
    В любом случае спасибо вам большое за уже уделенный мне ответ!
    Ссыль: github.com/Anonystus/Simple-MVC-for-studying .
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    https://github.com/Anonystus/Simple-MVC-for-studying/blob/master/controller.php - здесь не должно быть html, если в это контроллером называете. От слова "вообще". https://github.com/Anonystus/Simple-MVC-for-studying/blob/master/view.php - здесь не должна стартовать сессия. Здесь должен быть исключительно html и инструкции вывода.

    Вообще, возьмите реальную задачу какую-нибудь, на ней тренируйте своё MVC. Вот, к примеру: https://php.ru/forum/threads/kak-bystro-osvoit-php.52331/#post-419213
    --- Добавлено ---
    https://github.com/Anonystus/Simple-MVC-for-studying/blob/master/index.php#L6 - ой, вот это уже просто бред. Какая переадресация? Вы чего? Просто включаете файл нужного контроллера в простейшем случае.
     
    Алекс8 нравится это.
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    а не с 5 строки начинается?
    ладно опущу там 3 строку...
     
    Алекс8 нравится это.
  7. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    лучше поищите другой пример)) это плохой))
    у нас тут есть тема с тестовым заданием)) https://php.ru/forum/threads/kak-bystro-osvoit-php.52331/
    вот я делал https://github.com/kak2z7702/test_php_ru в теме есть другие решения..
    там видно как реализуется вход через один файл.. как подгружается вьюха и туда данные передаются готовые...
    правда там контроллер и модель смешаны)) но на это не смотрите)) и да.. там на функциях все.. городить классы в небольшом приложении я не увидел смысла)
     
    lolix нравится это.
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    @Алекс8 в твоем весь index можно подлатать
    dirname(__FILE__) - устарел
    ini_set('display_errors', 1); - не нужен
    define - обычный:

    const
    ONE = 1,
    TWO = 2,
    ...​
     
    Алекс8 нравится это.
  9. Oleg111

    Oleg111 Новичок

    С нами с:
    1 ноя 2017
    Сообщения:
    7
    Симпатии:
    0
    А есть ресурсы step by step по каждой технологии например по MVC? Было бы удобно новичкам.
     
  10. lolix

    lolix Новичок

    С нами с:
    5 май 2017
    Сообщения:
    30
    Симпатии:
    1
    Спасибо за подсказки и конструктивную критику!
    Cтруктуру я реализовал неправильно,исходя из того что вы сказали понял что надо было сделать выбор контроллера и запрос в файл index.php который потом обращался в controller.php который потом идет к main.php(который отвечает контроллеру) и после controller.php(с ответом от main.php)->view.php после view.php->controller.php(со своим ответом который динамически сгенерирован в html-коде со статикой) а controller.php->index.php с ответом от view.php.Извиняюсь за такой поток однотипных слов))))) Но ответьте правильно ли я вас понял?

    В контроллере не должно быть html-а за это извиняюсь(свою ошибку благодаря вам я понял)

    За локальную переадрисацию через header() тоже извиняюсь здесь я и вправду дико ступил.

    За то чтобы тренироваться с моим шаблоном MVC,я считаю что должен максимально качественно написать MVC(с ООП,подключением к ДБ,и без говнокода как сейчас) а вот после уже практика.
    Тот код который вы видели я быстренько накидал чисто для себя чтобы понять понимаю ли я хоть что-то в структуре MVC.

    Благодаря таким как вы новички вроде меня учатся на вашем опыте.
    Благодарю за уделенное время!
    Кстати о задаче линк на которую вы мне кинули я уже написал нечто подобное https://github.com/Anonystus/Registration но без разлогирования и кнопки(мой код не был попыткой реализации данной задачи) но как это реализовать я знаю(В первом случае просто убиваем сессии и куки) (во втором создаем поле в ДБ и при каждом нажатии добавляем +1).
    --- Добавлено ---
    О задаче линк на которую вы мне кинули я уже написал нечто подобное https://github.com/Anonystus/Registration но без разлогирования и кнопки(мой код не был попыткой реализации данной задачи) но как это реализовать я знаю(В первом случае просто убиваем сессии и куки) (во втором создаем поле в ДБ и при каждом нажатии добавляем +1).
    После грамотной реализации MVC пройду данный тест!
    Благодарю вас за потраченное на меня время!
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну вот и перепишите теперь на mvc это дело.
    Чтоб я в этом что-то понял :))) index кидает на нужный контроллер, контроллер вызывает нужную модель для получения данных, и передаёт эти данные view, которая формирует вёрстку. Возвращать эту вёрстку или сразу вывести - решаете уже вы от сложности задачи.
     
  12. lolix

    lolix Новичок

    С нами с:
    5 май 2017
    Сообщения:
    30
    Симпатии:
    1
    Да именно так я и понял!
    Спасибо за потраченное на меня время!
    --- Добавлено ---
    Извините а где вы увидели этот код?
    Я его сегодня писал в index.php но потом удалил и перезаписал o_0
    --- Добавлено ---
    Извините а где вы увидели этот код?
    Я его сегодня писал в index.php но потом удалил и перезаписал o_0