# Разработка своего MVC фреймворка на PHP

В предыдущих уроках вы тренировались использовать готовый MVC фреймворк. Как правило, этим PHP программисты и занимаются - берут один из популярных готовых фреймворков, изучают его, а потом используют. В настоящее время есть `3` самых популярных фреймворка: Laravel, Yii и Symfony.

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

Далее в данном учебнике мы с вами разработаем свой MVC фреймворк на PHP. Еще раз подчеркну, что данный этап уже не обязателен, но поспособствует закреплению ваших знаний ООП на практическом примере.

Итак, приступим к разработке. На самом деле вы будете разрабатывать не какой-то абстрактный фреймворк, а просто реализуете функционал того учебного фреймворка, который мы использовали в предыдущих уроках.

Вы уже знаете, какой функционал у вас должен быть. Осталось его реализовать. Приступим!

## Точка входа

Для начала в корневой папке вашего домена сделаем файл `index.php` со следующим содержанием:

`<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); ?>`

Создайте файл `index.php` и добавьте в него указанные строки.

## Настраиваем htaccess

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

Вот содержимое файла `htaccess`:

`RewriteEngine On RewriteBase / RewriteRule .+ index.php`

Вспомним теперь, что адреса из папки `project/webroot` не должны перенаправляться на индекс, так как там мы храним стили, скрипты, картинки и тому подобные вещи. Учтем это в нашем `htaccess`:

`RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^/project/webroot/ RewriteRule .+ index.php`

Создайте файл `htaccess`. Выполните описанную настройку. Проверьте ее работу: все адреса, кроме адресов из папки `project/webroot` должны редиректится на `index`.

## Автозагрузка классов

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

`<?php namespace Core; error_reporting(E_ALL); ini_set('display_errors', 'on'); spl_autoload_register(function($class) { // ваша реализация автозагрузки }); ?>`

Реализуйте функцию автозагрузки. Проверьте ее работу.

←→
↑