Как стать автором
Обновить

Пишем свой MVC движок с нуля (урок 1) на примере магазина книг

Так вышло что я некогда не пользуюсь чужими движками и плагинами, может это и плохо да и скорее всего плохо, но нечего с собой поделать не могу. При написании одного из проектов решил использовать mvc(model, view, controller), не буду рассказывать о том что это и зачем это применять, google в помощь. Так вот решил сам все писать, и после не мало проведенного времени в гугле и прочтением всякой нужной и не нужной информации о mvc, приступил к написанию движка. Теперь хочу с вами поделиться дабы некто из таких как я не наступал на те же грабли.

И так, перед написанием надо понять какие базовые классы надо использовать помимо model, view, contoller, для этого надо подумать будет ли использоваться База Данных? в нашем проекте конечно будет, значит напишем класс appBase для работы с базой данных, идем дальше так как мы продаем книги то напишем класс book, для маршрутизации url напишем класс router.

И того, для работы движка потребуются следующие классы:

  • model
  • view
  • controller
  • appBase
  • book
  • router

Так же, нужно определить файловую структуру нашего приложения, я использую такую:

image

root — корневой каталог
app — каталог с файлами приложения
classes — каталог с базовыми классами
models — каталог с файлами моделей
controllers — каталог с файлами контроллеров
views — каталог с файлами представление(можно сказать с дизайном приложения)
comp — каталог с файлами представления для компьютеров
mobile — каталог с файлами представления для телефонов (если нужно)

Остальные три папки нет смысла описывать. В папке app будут присутствовать 2 файла (bootstrap.php, config.php). И так дорогие программеры, готово…

Теперь можно приступать к нашему любимому написанию, знаете, я всегда считал что написанное приложение отзеркаливает душу программиста, по написанному приложению можно многое сказать о программисте как о человеке. Но что то меня понесло не туда. В этом уроке мы напишем файлы index.php , htaccess, botstrap.php.

И так что mvc работало как надо, надо перенаправлять запросы к серверу на файл index.php, для этого в корневой папке создаем файл htaccess а в нем прописываем, ну или копируем и вставляем следующее:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Хорошо, теперь можно работать дальше.

Создаем в корневом каталоге файл index.php и в нем пишем следующее:

<?php

//Включаем отображение ошибок
ini_set('display_errors', 1);

//Подключаем файл инициализации
require_once 'app/Bootstrap.php';

?>

Не буду объяснять что выполняют эти команды так как все прокомментировано, идем дальше в папке app создаем файл bootstrap.php в нем прописываем следующее:

<?php
//Начинаем сессию
session_start();

//Подключаем настройки
require_once 'config.php';

//Выводим сообщение что файл bootstrap.php подключен для проверки
echo "Файл bootstrap.php подключен<br>";
?>

Далее в папке app создаем файл config.php, в нем прописываем следующий код:

<?php
/**
 * Настройки скриптов
*/
//Начало переменных замены
define('KEY_START', '{');
//Конец переменных замены
define('KEY_END', '}');
//fele exits design
define('FILEEXT', '.html');
//Папка с компьютерной версией 
define('PAGEDIRCOMPUTER', 'comp/');
//Папка с мобильной версией 
define('PAGEDIRMOBILE', 'mobile/');

//Папка с файлами отображения
define('PAGEDIRCOMP', 'app/views/'.PAGEDIRCOMPUTER);
//Доменное имя приложения
define('DOMAINSERVER', 'http://' . $_SERVER['HTTP_HOST']);
//Папка с моделями
define("PATCHMODEL", 'app/models/');
//Папка с контроллерами
define("PATCCONTROLLERS", 'app/controllers/');
//Папка с файлами javascript
define('JSFOLDER', DOMAINSERVER.'/app/views/comp/js/');
//Папка с файлами css
define('CSSFOLDER', DOMAINSERVER.'/app/views/comp/css/');
//папка с файлами images
define('IMGFOLDER', DOMAINSERVER.'/app/views/comp/images/');
/**
 * Настройки базы данных
*/
//Хост базы данных
define('DBHOST', 'localhost');
//Логин базы данных
define('DBLOGIN', 'root');
//Пароль базы данных
define('DBPASSWORD', '');
//Название базы данных
define('DBNAME', 'book_magazin');
/**
 * Настройки роутера
*/
//Контроллер по умолчанию
define("CONTROLLERDEFAULT", 'Main');
//Действие по умолчанию
define("ACTIONDEFAULT", 'Index');

//Выводим сообщение что файл config.php подключен
echo "Файл config.php подключен<br>";

?>

И так после обращения к сайту, у меня это habraLesson.ru, можно увидеть следующее:

image

Это говорит о том что все хорошо и файлы подключились, даже если обратиться так habralesson.ru/dsfsdfsdfsdfsdf, мы увидим тоже самое, но при обращении вот так habralesson.ru/app, мы увидим следующее:

image

Чтобы скрыть файлы и папки в фале htaccess добавим следующее:

<Files .htaccess>
order allow,deny
deny from all


Теперь можно удалить строки из файла config.php:

//Выводим сообщение что файл config.php подключен
echo "Файл config.php подключен<br>";

B строки из файла bootstrap.php:

//Выводим сообщение что файл bootstrap.php подключен для проверки
echo "Файл bootstrap.php подключен<br>"; 

На этом первый урок закончен, скоро будет второй. Спасибо, если кто сумел дочитать мой скучный первый пост.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.