Pull to refresh

Пишем свой 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>"; 

На этом первый урок закончен, скоро будет второй. Спасибо, если кто сумел дочитать мой скучный первый пост.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.