Здарова всем! Это уже третья статья. Продолжаем создавать наш движок на php .
Здарова всем! Это уже третья статья. Продолжаем создавать наш движок на php.
Для начала возьмем весь код из главного файла index.php и вынесим его в отдельный класс с названием Bootstrap, который будет находиться в папке libs.
Файл bootstrap.php в папке libs.
<?php
class Bootstrap {
public function __construct() {
$url = $_GET['url'];
$url = rtrim($url, '/');
$url = explode('/', $url);
$file = 'controllers/'.$url[0].'.php';
if(file_exists($file)) {
require $file;
} else {
require 'controllers/error.php';
$controller = new Error();
return false;
}
$controller = new $url[0];
if(isset($url[2])) {
$controller->$url[1]($url[2]);
} else {
if(isset($url[1])) {
$controller->$url[1]();
}
}
}
}
?>
Как вы можете видеть, здесь были добавлены некоторые проверки. Если файл есть, то подключаем его, иначе же подключаем контроллер, отвечающий за обработку ошибок и останавливаем скрипт. Давайте напишем наш контроллер ошибок. Для этого создайте файл error.php в папке controllers.
<?php
class Error {
public function __construct() {
echo "Контроллер обработки ошибок";
}
}
?>
Все, что нам теперь осталось, прописать в нашем главном файле index.php, который у нас сейчас пустой, следующее:
<?php
require 'libs/Bootstrap.php';
$app = new Bootstrap();
?>
Все! Теперь у нас все должно работать, как и раньше, но если вы введете какое-нибудь неверное название контроллера, то увидите надпись, которую выводит наш контроллер ошибок
Что же, давайте теперь создадим базовый контроллер, который будет самым главным, а остальные контроллеры будут наследовать его. Для этого создайте файл Controller.php в папке libs.
<?php
class Controller {
public function __construct() {
echo "Это главный контроллер";
}
}
?>
Теперь абсолютно всем контроллерам пропишите: extends Controller
Вот пример того, что нужно сделать со всеми контроллерами, на примере контроллера Error.php
<?php
class Error extends Controller {
public function __construct() {
echo "Контроллер обработки ошибок";
}
}
?>
После того, как вы сделали это, всем контроллерам в конструкторе также следует прописать вызов родительского конструктора.
parent::__construct();
Теперь в нашем главном файле index.php добавьте подключение нашего главного контроллера.
<?php
require 'libs/Bootstrap.php';
require 'libs/Controller.php';
$app = new Bootstrap();
?>
Теперь пропишем в нашем главном контроллере создание объекта View, который будет отвечать за вид.
<?php
class Controller {
public function __construct() {
echo 'Это главный контроллер';
$this->view = new View();
}
}
?>
Все. На этом я заканчиваю эту статью. Сегодня доработали наш роутер и создали контроллер, отвечающий за ошибки, а также главный контроллер. В следующем уроке мы уже перейдем ко второй части паттерна MVC - виду. До скорого!
