Создать свою cms php

Пишу CMS на PHP. Часть 1

Сразу хочу умерить ваш пыл по отношению к заголовку: школьный возраст я давно пережил и знаю о чем говорю. Поэтому давайте будем толерантны друг к другу и дадим мне возможность изложить свою идею до того как вы ее раскритикуете.

Все мы хорошо знаем существующие популярные движки на PHP. Также можно упомянуть практически никому неизвестные, которые разрабатываются любителями. Но всех их объединяет одно большое «НО» в плане идеи, что собственно меня всегда и беспокоило. Почему никто не пользуется CMS при разработке высоконагруженных проектов? Все дело в том, что каждая из них спроектирована таким образом, чтобы всячески мешать разрабатывать какой-либо неспецифический функционал, не говоря о некоторых отдельных ситуациях.
Идея эта у меня появилась так же давно, как я начал программировать. С тех пор много лет прошло, много опыта набрался, практики. В общем, есть с чем сравнивать. Почти идеальным примером для меня является Django на Python’е. Но для конечного пользователя требуется огромное время для шлифовки интерфейса, базовых функций и прочего. И я подумал: не лучше ли мне писать ядро системы и прочее, под чутким руководством публики, которая предоставит максимум конструктивной критики в пользу моих наработок?

Базовые шаблоны программирования

Наиболее распространенным шаблоном программирования, по моему опыту, на данный момент является MVC и его модификации. Множество раз я пытался писать, следуя патерну, но результат всегда доводил меня до безумия. Нельзя так просто взять и разделить все на Model-View-Controller. Конечно, я могу ошибаться, и собственно потому вы это читаете.

Возьмем за пример простую работу с API и синхронизацию с данными модели к примеру User. За движок, фреймворк (кому как удобно) — Symfony. Я уверен: опытные в этом деле люди уже поняли с чего все начнется и чем все закончится.

Мою альтернативу я не могу назвать идеалом, но мне она очень по душе. Суть сего такова, что любые операции с данными системы, вычисляемыми данными, данными других сервисов позиционируются как Сервис. Сервис по сути является обычным пакетом PHP с классами и собственным пространством имен. Но кто мешает нам положить туда файл конфигураций, базовые шаблоны части View или кешируемые данные? Ведь все эти вещи относятся именно к нему, и стоит ли нам засорять общую папку для шаблонов/конфигов?

  • Доступ к базе данных будет иметь только Service / Сервис
  • Сервис может содержать классы, трейты, Конфигурационные и кеш-файлы, базовые шаблоны
  • Доступ к сервису будет осуществляться с помощью единого метода объекта из области контроллера
  • Сервис обязательно имеет собственное пространство имен
Читайте также:  Радиус

Если хорошенько подумать, то это — тот же самый MVC, только здесь роль модели выполняет наш Service, который, как мы видим, значительно отличается от устоявшихся стереотипичных ОРМ моделей.

Как результат, фасадный класс сервиса User может в себя вмещать работу с его локальными данными, собственными файлами на сервере, работу с API и прочее. Унификация такой большой области разработки дает возможность очень качественно реализовывать конечный результат.

Очень хотел бы узнать ваше мнение.

Источник

Свой движок сайта на php в связке с MySql, для начинающих

Среди обычных пользователей различных CMS, есть те, у которых есть желание создать свою собственную CMS. Одним из таких пользователей был я.
В конце декабря я загорелся желанием сделать что то свое, при очень малом знании языков. И теперь, я хочу помочь рядовому пользователю несколько освоится в связке php и MySql, и в том, как можно написать свой сайт.

Во первых, мы должны понять, что у нас будет за сайт, и какова будет его структура.
У меня была идея фикс — истории из игр, чтобы любой пользователь мог их добавлять и выводились они постранично из БД MySql.

И так, сначала разметим структуру страницы. Для меня это было:

Header
Menu
Content
Sidebar
Footer

Header — шапка сайта;
Menu — соответственно меню;
Content — содержимое страниц в моем случае истории, но содержимым может быть все, что угодно;
Sidebar — боковая колонка, где находились новости и лучшие истории;
Footer — нижняя часть сайта (подвал) с копирайтом.

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

Читайте также:  Зачем html если есть tilda

После этого, я создал 6 пустых php: index.php, config.php, connect.php, header.php, menu.php, content.php, sidebar.php и footer.php.

Забыл отметить, что для удобства редактирование кода стоит скачать программу Notepad++ — русская версия в ней есть.

Итак, начнем с простого. Для начала, в файл index.php добавим вот этот код:

Тэгами и ?> мы открываем и закрываем наш код (вместо можно использовать просто ).
А конструкция include(‘ ‘); позволяет включать файлы в код PHP скрипта во время выполнения сценария. Т.Е. в код нашей главной страницы автоматически, и в заданном нами порядке будет включен код из всех файлов, которые мы «включили».

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

Наша следующая задача — создать в базе данных таблицы и заполнить их данными, касательно названия нашего сайта и тп.
Здесь мы можем пойти двумя путями:

  1. Создать полноценный установщик сайта, и панель администратора.
  2. Либо просто создать страницу типа install.php, в которую мы внесем все нашы данные и один раз перейдем на нее, для выгрузки данных и создания таблиц.

Для начала, пройдем вторым путем — простым.
Для этого мы сначала внесем в наш файл config.php данный код:

Помимо комментариев в самом коде, хочу добавить то, что $any_text — это переменные, которые мы задаем. Также, в php после любой функции, конструкции и тп. необходимо добавлять «;».

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

"; //выводим текст о успешном подключении к бд //Подключаемся к бд, затем задаем переменной t_si_c функцию создания базы данных и исполняем ее mysql_select_db($database, $db); $t_si_c = "CREATE TABLE SiteConfig (option_id int(3), option_name varchar(50), option_value varchar(244) )"; mysql_query($t_si_c,$db); echo "Таблица SiteConfig успешна создана
"; $id_1 = "INSERT INTO SiteConfig (option_id, option_name, option_value) VALUES ('1', 'SiteTitle', '$sitetitle')"; $id_2 = "INSERT INTO SiteConfig (option_id, option_name, option_value) VALUES ('2', 'Title', '$title')"; $id_3 = "INSERT INTO SiteConfig (option_id, option_name, option_value) VALUES ('3', 'About', '$about')"; mysql_query($id_1,$db); mysql_query($id_2,$db); mysql_query($id_3,$db); echo "Данные Title, About и SiteTile успешни записаны
"; */ $t_content_c = "CREATE TABLE Content (id TEXT(1000), time DATETIME(), rating TEXT(10000), tags TEXT(500), name TEXT(300), story TEXT(1000000) )"; mysql_query($t_content_c,$db); mysql_query("CREATE TABLE Content( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), time TIMESTAMP(14), rating TEXT(10000), tags TEXT(500), name TEXT(300), story TEXT(1000000) CHARACTER SET utf8 COLLATE utf8_general_ci ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci") or die(mysql_error()); echo "Content!"; include('close-connection.php'); echo "Подключение к MySql БД закрыто
"; echo "Установка успешно завершена";?>

Данный файл установки очень примитивен. К примеру, если вы хотите, чтобы при любых ошибках вам выдавались сообщения, то вы можете использовать «or die«. Пример:

mysql_select_db($database,$db) or die ('
Выбор БД не произошел: ' .mysql_error()); echo "
Подключение к БД прошло успешно
";

В данном случаем, при ошибке будет выводиться строка: «Выбор БД не произошел: и далее сама ошибка».

Читайте также:  Java hibernate for beginners

Подведем некоторые итоги: у нас есть пустая база сайта, как бы это ни было печально, и созданные в БД таблицы, которые были заполнены.

Источник

Оцените статью