Для начала давайте поймем самую главную истину, будь то CMS, FrameWork, PhpMyAdmin, SquirrelMail (тоже в одном из уроков будет) - это всё программный код написанный на языке PHP. Это не магия и не фантастика, перед нами не самолёт, который мы никогда в жизни не сможем изобрести, это просто элементарнейший код на PHP, просто в большом объеме на который затратили силы и человекочасы разной квалификации программисты. Над некоторыми из этих проектов работали парочку человек, над другими сотни. О качестве же этого кода нельзя судить лишь по одному названию, над некоторыми CMS (их сотни, если не тысячи) работали разные программисты, а значит где-то получились удачные проекты вроде Bitrix и пользуются популярностью среди программистов, а некоторые "My Little Shop" появились только в одном экземпляре и у одного заказчика, где разработка была брошена и не завершена, где присутствуют тысячи багов и ошибок! Теперь, когда мы понимаем, что это обычный элементарнейший код, который даже новичок сможет написать, давайте лишь разберёмся в отличиях терминологии.
Что такое CMS?
Ответ очень прост, это Content Management System (система управления содержимым) или же система управления контентом, на простом языке админка сайта и, зачастую, готовая видимая часть сайта. Представьте себе интернет-магазин, открывая сайт Вы попадаете на видимую его часть и это вывод товаров, которые продаёт магазин. И это уже готовый внешний вид с определённым оформлением и удобством для посетителей. Админка - это та скрытая часть, где администратор или же владелец сайта добавляет на сайт товар (создаёт данные), а так же его редактирует и удаляет по необходимости. Вот и всё, много разных страниц позволяющих в удобном формате добавлять, редактировать и удалять контент.Объема работы очень много, чтобы добавить один товар необходимо написать код по добавлению записи товара, так же загрузке картинок, иногда и видео роликов, кроме этого возможность выгружать товар в виде прайса или из прайса 1C Бухгалтерии (к примеру) переносить товар на сайт. Так вот, CMS - это уже заранее написанный готовый код с внешним содержанием и внутренней админкой, одним словом полноценный готовый сайт, просто натяни свой уникальнейший дизайн и наслаждайся.
Всё было бы ничего и все бы пользовались только CMS если бы не несколько минусов: для начала это чужой сложный код и не всегда он написан идеальным образом. Самый популярный интернет-магазин 1C-Bitrix в сообществе программистов вызывает ужас и панику, если кого-то из них просят внести правки и переписать какой-то кусок кода, так же можно встретить цитаты: "мой сайт работал очень плохо, на странице вывода товаров при большой базе всё тормозило, пришлось переписать код вывода товаров на правильный". Вторым минусом будет совместимость и поддержка, ведь расширять код своим можно всегда, но вот что делать, когда в уже готовом содержится ошибка? Стандартное действие написать в тех.поддержку с просьбой устранить ошибку и ожидание исправления бага месяцами. При этом если самому изменить код, то обновление станет недоступным, а если всё же обновить, то новый код затрёт твой и не факт, что после будет работать всё корректно. А ведь любой программист знает, что ежедневно находятся новые уязвимости то в одном коде, то в другом разным CMS, поэтому обновлять не просто желательно, а НЕОБХОДИМО! Так же рано или поздно мы сталкиваемся более уникальными задачами чем просто интернет-магазин, вот тогда готовых CMS нет и нам приходится создавать всё с нуля. Согласитесь, не существует CMS гугла, или CMS игры в мафию, а существуют только интернет-магазины, блоги и социальные сети в формате сайта знакомств и там, где заканчивается популярность заканчиваются и эти самые CMS. Самый яркий пример - турфирмы, этот вид бизнеса присутствует практически в каждом городе и не один, а порой и не один десяток, но вот готовых CMS с встроенным поиском авиабилетов нет.
Беря во внимание все минусы той или иной CMS даже популярной тематики рано или поздно программист решает написать свою с блэкджеком и шлюхами!
Что такое FrameWork
Ответ чуть сложнее, но так же достаточно прост. Framework, он же фреймворк (переводится как каркас, структура, но не в лексиконе не употребляется) - ядро сайта, отвечающее за структуру кода сайта, не путайте с внешней структурой сайта. Принято всё раскладывать по полочкам, так и тут - отдельно одна страница, отдельно вторая страница, так вот, когда в адресной строке мы пишем https://school-php.com/check , то код выполняется из файла view.php , который лежит в папке modules/static , в вот если ввести в адресной строке https://school-php.com/courses , то код будет выполняться из файла view.php , который лежит в папке modules/courses . Так вот, за объяснение системе какой файл или набор файлов (обычно подключается не один, а несколько, так и у меня на сайте за одну страницу отвечает минимум 6 файлов) выполняются отвечает ядро сайта, он же FrameWork. В голом фреймворке у нас отсутствует страницы, так как их надо будет создать. Ни админки, ни внешних страницах кроме главной с чистым белым листом, ничего нет. Всё создаётся вручную программистом, но пользуется уже готовым ядром. Вот захотели Вы воспользоваться ядром из данного курса и решили создать страницу для отзывов на сайте, поэтому Вы делаете несколько простых действий: в одну строчку записываете имя новой страницы, создаете 2 необходимых файла reviews.php и reviews.tpl в нужных папках и страница готова, далее уже занимаетесь наполнением.Помимо указания какие файлы при каком URL запустить на FrameWork накладывают ещё несколько задач. Для начала это минимальный набор кода джентльмена, своего рода библиотека часто используемых функций на сайте. Вы часто можете встретить практически на любом сайте постраничную навигацию, где на первой странице выводятся 10 товаров, на второй странице ещё 10 товаров и так далее. Кроме этого практически на всех сайтах есть регистрация пользователя, отправка писем с уведомлениями, для админки может выступать код по загрузке картинок или других файлов и многое другое. Чем крупнее фреймворк, тем больше у него написанных библиотек, вот так выглядит один из крупнейших и популярных фреймворков Yii:
Когда мы начинаем пользоваться фреймворком, то пишем так:
запрос_к_базе_данных(выбрать всех пользователей для страницы 2);
Вывести постраничную навигацию;
Вывести всех пользователей в формате {
логин, пароль, фио
}
Вывести постраничную навигацию;
Когда я пишу "вывести постраничную навигацию", я вправду пишу этот код в одну строчку, на моём FrameWork это выглядит так:
\FW\Pagination\Pagination::nav();
Подводя итоги хочу сделать такие выводы, FrameWork - это каркас сайта и набор популярного в использовании кода в виде готовых скриптов, но при этом отсутствует сам сайт. Мы упростили процесс создания нового сайта за счёт того, что нам не надо каждый раз писать заново один и тот же код, мы пишем его один раз, а далее пользуемся. Когда я хочу сравнить фреймворк, то я сравниваю его с молотком. Представьте как было бы тяжело строить дом не имея молоток, но при этом если Вы не умеете строить дом, то вооружившись молотком знаний у Вас не прибавится и построить нормальный дом Вам так же не удастся сделать. FrameWork - обычный инструмент программиста, который упрощает создание сайта, но не замещает его так, как это делает CMS.
Комментарии о School-PHP (1):
Спасибо, Стас!!!)))