• Как правильно реализовать паттерн MVC?

    @vashaaa
    Юх с горы
    Взять самый легкий фреймворк codeigniter и подсмотреть не вариант? За день два разберетесь, там и поймете что хотите. У вас все очень классно разписано, не спорю, но реализовать это с начальными знаниями(как вы говорите) и без знания каких либо других фреймворков будет тяжело если не возможно. В голове картину нарисовать легко, попробуйте её на холст перенести). Почти у всех кто пробывал сделать свой фреймворк была такая история:"Нарисовал идею в голове/бумаге, начал пробывать пилить, пилишь пилишь. -Тьфу дерьмо какое!!!... Снес все под чистую. Начал с нуля. Этот пункт повторяеться 3-5 раз в зависимости от настойчивости(овны и козероги привет). Потом береться фреймворк, смотриться что и как сделано. Пытаемся взять основную идею, но сделать по своему. Пилим пилим. Опять пункт про " -Тьфу дерьмо какое!!!.Сносим". В итоге повторяем почти все, но допиливаем что-то свое, что кажеться нам нужным и уместным. В итоге из таких вот франкинштейнов потом выходят свои cms , которые они знаю вдоль и поперек(сам же пилил, пыхтел) и возможно даже используються(некоторые так и пилят сайтики на своих cms, когда видят что дописывать функционал к "своему детищу" куда легче чем допиливать wordpress)". Такие вот дела. Пробуйте, пригодиться.
    Ответ написан
    8 комментариев
  • Как правильно реализовать паттерн MVC?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ваша задача - не зацикливаться на аббривиатуре MVC и подумать над тем, как отделить HTTP от приложения. Для упрощения представьте что:

    - view - это HTTP запрос и ответ. Это представление данных которое требует от сервера клиент.
    - model - это ваше приложение которое ничего не знает о HTTP
    - controller - это не один класс, а возможно целая цепочка классов, чья задача - абстрагирование модели от HTTP. Можно воспринимать ее как цепочку адаптеров. Запрос приходит в один адаптер - там разруливаем маршрутизацию, нашли контроллер - передаем дальше. Со временем адаптеры могут добавляться, например для добавления CORS или аутентификации могут быть дополнительные "адаптеры" (гуглить про middelwares, PSR-7 и т.д.)

    Так же не забываем про принцип инверсии контроля (Inversion of control). Фреймворк должен вызывать ваш код а не ваш код дергать фреймворк. То есть именно контроллеры дергают модель а не наоборот. Модель ничего не должна знать ни о view ни о контроллерах.

    Удачи.

    p.s. я описал mediating controller MVC, оригинальный же паттерн MVC 79-ого года на бэкэнде не применим.

    p.p.s. Перед имплементацией MVC рекомендую познакомиться с такими инструментами как composer. И например роутер сходу не писать свой. И ради бога не используйте PHP как шаблонизатор (гуглить про то что такое XSS), возьмите twig.

    p.p.p.s https://github.com/pmjones/adr - рекомендую ознакомиться.
    Ответ написан
  • Организация каталога на MySQL. Как правильно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Стандартная связь многие-ко-многим. Таблица магазинов, таблица производителей, таблица связи магазин-производитель.
    Ответ написан
    1 комментарий
  • Можно ли удалить неиспользуемые стили из стилей фреймворка?

    DJZT
    @DJZT
    Laravel - code for you
    1. Bootstrap - Это для бутстрапа. Ты сам можешь его собрать.
    2. Ещё можешь выкачать исходники его в sass. Вырезать ненужные части и скомпилировать. Исходники есть для любого фреймверка.
    3. На gulp есть плагин. ben-eb/gulp-uncss Анализирует HTML и вырезает ненужные стили.
    Ответ написан
    Комментировать
  • Иконочные шрифты vs Спрайты. Что лучше?

    gatilin222
    @gatilin222
    Frontend-разработчик
    Мы в glivera-team используем как шрифты , так и спрайты. Как использовать я написал в статьях Иконочные шрифты и Как мы используем SVG-спрайты. А дальше выбор за вами)
    Ответ написан
    Комментировать
  • Иконочные шрифты vs Спрайты. Что лучше?

    oui
    @oui
    Front-end developer
    Шрифты - тот же svg. Вы о чем вообще? Почему запросов больше со шрифтами? Ты подключаешь один файл и юзашь через :before/:after. В любом месте используешь так же как текст, менять размер/цвет, не надо писать через img/background, не надо писать позицию иконки как в спрайтах, собирать их гораздо проще чем спрайты, особенно если использовать подобные сервисы - https://icomoon.io/app/ . Спрайты годятся когда иконки растровые, которые под вектор не загнать.
    Ответ написан
    Комментировать
  • Как разобратся с MVC?

    @newpy
    web-dev
    В представлении AR
    Model = Таблица
    экземпляр Model = запись из таблицы,
    что мешает получать записи по одной в цикле из нужной таблицы и записывать в массив. На выходе получается массив или коллекция. Собственно современные ORM это и делают.

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

    $categories = Categories::all()

    На выходе в переменной $categories получаем коллекцию (по сути массив каждый элемент которого является объектом модели Categories):

    Collection {#168 ▼
      #items: array:5 [▼
        0 => Categories {#169 ▶}
        1 => Categories {#170 ▶}
        2 => Categories {#171 ▶}
        3 => Categories {#172 ▶}
        4 => Categories {#173 ▶}
      ]
    }


    Вы можете пробежаться по этому массиву и получить нужную запись. Никаких проблем.

    Утрированно:

    Controller - управляет.

    Если это Посты, то ими надо управлять, действовать. Методы (actions, действия) работы с Постами, например create, delete, update, edit. Логично было бы предположить что для управления Постами нужен PostsController.

    Комментарии - свой набор действий (action) логично предположить что для них следовало бы сделать отдельный контроллер CommentsController, который содержал бы логику управления только Комментариями, а не всем на свете(например Пользователями). Вы всегда будете знать что Комментариями управляет CommentsController, Постами - PostsController. Более того, если кто-то другой откроет ваш код, то он сделает логичное предположение, что за Посты у вас отвечает PostsController и начнет работать/ломать оттуда.

    Не зацикливайтесь сильно на теории. Пишите код, и чаще выводите var_dump()-ом промежуточные результаты, вы будете видеть как устроено данные, и начнете понимать как к ним подобраться.

    Создайте объект класса (Модели), сделайте запрос, выведите дампом и посмотрите как устроены данные. Вы наглядно увидите объект это или массив, или ни то, ни другое, ни третье )).
    Ответ написан
    Комментировать
  • Сложно ли создать игру с командой 3-5 человек типа Fear, Silent Hill, Анабиоз?

    copal
    @copal
    𝄞 ...оооо baby
    Ответьте мне на вопросы -
    Скажите, а смогу ли я сделать одну из лучших игр? Я только завтра куплю книгу о программировании.
    Скажите, а смогу ли я сделать одну из лучших игр? У меня двадцать лет стажа и я участвовал в разработке всех топовых игр.

    Откуда отвечающий Вам может знать на что Вы способны? Человек который не понимает этого не может создать игру, ему ещё нужно минимум пять лет учится, чтобы дойти до того уровня, когда он сможет понять, что спрашивать нужно о другом.
    Ответ написан
    Комментировать