@smart_pro
php начинающий

Написание первой CMS. Как лучше?

Здравствуйте. Задумался о написании CMS для личного развития, для своего личного сайта который будет жить долго и обновляться по мере надобности. Скорее всего это будет похоже больше на блог но с доп. функционалом.
Общий план
Статьи (блог, новости)
Медиа (фото, видео)
Комментарии от гостей к статьям
ну и написание админки под все это дело.

Как видите, запросы не большие но хочется сделать грамотно чтобы потом в будущем не завязнуть в своей же каше с исходными кодами.
Первый вариант я уже написал, он работает по простому принципу;
Есть точка входа -> дальше есть обработчик который собирает из блоков(head,content,footer) страницу и возвращает результат юзеру.
больше всего кода в блоке content по выводу новостей и прочих мелочей.
Прочтя куча статей на хабре и других форумах, рассуждения многих комментаторов по подобным вопросам включая на Тостере в голове все "перемешалось" и выстроилось нереально сложная картина с разработкой CMS.
Т.е. прежде чем мне написать CMS мне надо "перелопатить" тысячи исходных кодов различных CMS, изучить их, проработать с ними как минимум год чтобы понять как написать правильно свою систему?

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

Сами вопросы:
Как составить не сложную диаграмму для своего движка?
Что нужно мне для этого и как составить хотя бы базовую архитектуру CMS?

p.s. я прекрасно знаю о наличии различных фреймворков которые упрощают процесс разработки в десятки раз для моих задач, но интерес составляет написать самому т.к. обычно фреимворки используются по моим взглядам для заказных проектов а я никуда не тороплюсь но начать разработку по человечески уже хочется.

Всем спасибо за ответы! Многое прояснилось.
  • Вопрос задан
  • 1296 просмотров
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Т.е. прежде чем мне написать CMS мне надо "перелопатить" тысячи исходных кодов различных CMS, изучить их, проработать с ними как минимум год чтобы понять как написать правильно свою систему?


Именно так. Я бы даже сказал годика так 3 хотя бы, и пару десятков разных проектов. Важно что бы вы получили разный опыт.

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


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

но интерес составляет написать самому

Начните с фреймворка:

- библиотека для рендринга шаблонов (буферизация вывода, работа с файловой системой немножко)
- библиотека для маршрутизации запросов (прошаритесь в регулярках)
- библиотека для работы с базой данных (не ORM, начните с Table Data Gateway или DAO хотя бы. Прошаритесь в SQL минимально).
- Ядро, связывающее все это вместе. Желаельно с какой-то концепцией мидлвэров, что бы все остальныекомпоненты ничего не знали о ядре. (прошаритесь в HTTP)

В целом же писать CMS очень и очень скучно и долго. Вы намного быстрее прошаритесь во всем что надо делая отдельные компоненты. Благо сейчас век composer-а и вы можете крутить и вертеть фреймворками как хотите, подменяя чужие компоненты на свои.
Ответ написан
@RichyNix
Программирование, Серверное администрирование
Для начала, можете попробовать писать все в функциональном стиле, это если опыта веб разработки у вас не очень много.

При таком подходе все сводится к тому, что вы просто пишете функции которые отвечают за определенные возможности - вывод статей, комментариев и т.д и т.п

На начальном этапе не стоит сильно беспокоится об оптимизации кода, все приходит со временем.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ссылка на мой блог: sitecoder.blogspot.ru/p/blog-page_23.html
Я перечислю здесь основные блоки "пирога":
1. Сессия
2. ACL
3. Роутер
4. Приложение (входные данные, обработка, выходные данные, шаблон представления)
5. Модули (входные данные, обработка, выходные данные, шаблон представления)
6. Шаблон страницы
7. Рендер готовой страницы и отдача в браузер
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Immortal_pony
@Immortal_pony Куратор тега PHP
Простейшая CMS занимает 8 строк кода
Берите и дорабатывайте под свои нужды.
Ответ написан
edli007
@edli007
full stack, team lead
все популярные CMS давно пришли к фреймворко подобной структуре, вашу CMS можно использовать как фреймворк?
Ответ написан
dmitriylanets
@dmitriylanets
веб-разработчик
Необходимо обозначить основные цели и планы развития CMS. Если для себя и больше в сторону удобства разработки программистами это может быть одно направление что то вроде CMF , если нужно ориентирование на клиентов то это будет другой план развития приоритеты инстилляция системы и модулей, обратная связь с пользователями, каталог модулей, настройка шкур. Коммерческая, опенсорс. Какие нагрузки будет выдерживать. Все это должно в конечном итоге влиять на архитектуру системы.
По своему опыту, если для себя:
1. Взять фраймеворк, допилить под нужды, сформировать первую версию CMS
2. Взять проект за деньги, реализовать на своей CMS. Проанализировать архитектуру, ошибки, упущения. Создать план на корректировку функционала CMS.
3. Взять проект, развернуть на своей CMS, внедрить корректировки.
и так далее, все время анализируя систему и улучшая ее.
Вот на что я обратил бы внимание: модульность, composer, работа с бд, роли и права доступа, многослойная архитектура
Ответ написан
Комментировать
@AndHacker
Мне в голову раньше приходила такая же идея. Лучше взять готовую cms и переработать под свои нужды. Например, отрезать функионал))
Ответ написан
@vkuranov
Написание первой CMS. Как лучше?

Писать самому ничего не надо. Все уже давно написано. Лучше брать готовые решения и улучшать их, внедрять свои идеи под свои задачи. Я бы остановился на трех китах: JQuery, РНРQuery и на элементарныx знаниях PHP (МуSQL даже и не обязательно).
Посмотрите мой сайтик: pagelite.ru/pagelite/home/?u=t0v1y0
Административная панель у него - на постороннем бесплатном сервисе. А сама CMS - на моем хостинге. Занимает не больше 1Кбайта, устанавливается без всяких настроек, раз поставил и больше не трогаем, вообще забываем про него).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы