В предыдущих уроках вы тренировались использовать
готовый 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) {
// ваша реализация автозагрузки
});
?>
Реализуйте функцию автозагрузки. Проверьте ее работу.