Створення движка на mvc. Пишемо роутер.
Відео: 3 урок. PHP ООП. Інтернет-магазин з нуля на PHP. MVC. Роутінг
Привіт всім! Ось і настала друга стаття з серії, присвяченій створення движка на MVC. Сьогодні ми створимо роутинг. Поїхали!
Для початку розберемося, як буде працювати наш роутинг. У нас буде єдина точка входу - index.php. Туди будуть відправлятися всі запити. URL буде такого виду:
https://site.ru/controller/method/param
Тобто спочатку буде йти контролер, потім метод, а потім параметри. цей URL розбиратиметься нашим роутером і буде викликатися переданий метод у переданого контролера з параметрами (якщо є).
Думаю, як це буде працювати, ви зрозуміли. Тепер відкриємо файл .htaccess і пропишемо наступне:
RewriteEngineOn
RewriteCond% {REQUEST_FILENAME}!-d
RewriteCond% {REQUEST_FILENAME}!-f
RewriteCond% {REQUEST_FILENAME}!-l
RewriteRule^ (. +)$ index.php?url=$ 1 [QSA,L]
Розберемося, що ми тут написали. Спочатку включаємо движок перезапису, потім задаємо 3 умови: якщо це не фізична директорія, файл або посилання, то беремо весь URL і відправляємо на файл index.php(Нашу єдину точку входу), передавши GET параметр url зі значенням нашого URL.
Тепер що б ви не ввели в адресний рядок, ви завжди будете потрапляти в файл index.php. Давайте перейдемо в цей файл і пропишемо наступне:
lt ;?php
$ url = $ _GET[`Url`] -
echo $ url-
?gt;
Тепер ви побачите ваш url. Давайте створимо контролер index.php в папці controllers.
lt ;?php
classIndex{
publicfunction __construct(){
echo "Ми в контролері INDEX"-
}
}
?gt;
Тепер в нашому головному файлі index.php підключимо його
lt ;?php
$ url = $ _GET[`Url`] -
echo $ url-
require_once `Controllers /`.$ url.`.php`-
$ controller =new $ url-
?gt;
Тепер ми побачимо напис, яку виводить конструктор нашого класу. Створимо ще один контролер help.php в папці controllers.
Відео: PHP Start | Практика: Урок 2. Реалізація MVC # 2
lt ;?php
classHelp{
publicfunction __construct(){
echo "Ми в контролері HELP"-
}
}
?gt;
Тепер якщо в адресному рядку після назви сайту (домена) ввести `/ help`, Ви побачите, що спрацював контролер Help.
Отже, думаю, ви зрозуміли, як це працює. Тепер, щоб не затягувати, я приведу відразу готовий код головного файлу index.php, а потім поясню його.
lt ;?php
$ url = $ _GET[`Url`] -
$ url = rtrim($ url,`/`) -
$ url = explode(`/`, $ url) -
require`Controllers /`.$ url[0].`.php`-
$ controller =new $ url[0] -
if(isset($ url[2])){
$ controller-gt;$ url[1] ($ url[2]) -
}
else{
if(isset($ url[1])){
$ controller-gt;$ url[1] () -
}
}
?gt;
Ось такий от вийшов файл index.php. Спочатку ми отримуємо наш url адреса і записуємо його в змінну $ url. Далі наш потрібно видалити останній слеш, інакше у нас буде помилка. Для цього ми скористалися функцією rtrim, куди першим параметром передаємо, що ми хочемо видалити, а другим - де. Після, використовуючи функцію explode ми розбиваємо нашу рядок на масив по Слеш. Тепер першим параметром у нас буде назва контролера, який ми і підключаємо рядком нижче і створюємо його об`єкт. Тепер перевіряємо, чи є параметри. Якщо так, то викликаємо переданий метод і передаємо параметр, а якщо немає, то просто викликаємо наш метод.
Відео: MVC # 02 - Router
Давайте тепер в нашому контролері help.php створимо метод other.
lt ;?php
classHelp{
publicfunction __construct(){
echo "Ми в контролері HELP"-
}
publicfunction other(){
echo "Ми в методі other контролера Help"-
}
}
?gt;
Тепер напишемо в адресному рядку наступне: ваш_домен.ru / help / other
І у нас виклик метод other контролера help.
Тепер змінимо наш метод other
lt ;?php
classHelp{
publicfunction __construct(){
echo "Ми в контролері HELP"-
}
publicfunction other($ arg =false){
echo "Ми в методі other контролера Help"-
echo "Параметри:".$ arg-
}
}
?gt;
Тепер в адресному рядку браузера напишемо так: ваш_домен.ru / help / other / 10 У метод передасться 10, і він це виведе.
Отже, ось ми вже й зробили наш роутер робочим. Звичайно, це тільки початок, але воно вже належить. Далі буде тільки цікавіше. Дякую за увагу!
- Як закрити сайт на реконструкцію
- Як зробити динамічне додавання коментарів, використовуючи ajax.
- Як зробити чпу-посилання
- Як створити движок для сайту
- Як видалити / додати слеш в кінці url через .htaccess
- Налаштування файлу htaccess
- Використання rewritecond в mod_rewrite
- Створення движка на mvc. Створюємо можливість додавання користувача в базу даних через адмін панель
- Створення движка на mvc. Покращуємо шифровку пароля користувачів.
- Створення движка на mvc. Закінчуємо роботу з чатом.
- Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
- Створення движка на mvc. Починаємо робити чат.
- Сайт з www і без
- Створення движка на mvc. Вступ.
- Створення движка на mvc. Продовжуємо роботу над чатом.
- Створюємо сокращатель url. Частина 3.
- Php: безпека. Підключення файлів.
- Створення движка на mvc. Начинам робити систему розподілу прав користувачів.
- Створення движка на mvc. Створюємо авторизацію.
- Створення движка на mvc. Виводимо сторінки. Частина 4.
- Створення движка на mvc. Починаємо роботу з базою даних.