Створення движка на 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. Починаємо роботу з базою даних.
Створення движка на mvc. Починаємо робити чат.
Створення движка на mvc. Створюємо авторизацію.
Створення движка на mvc. Продовжуємо роботу над чатом.
Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
Створення движка на mvc. Допрацьовуємо роутер.
Сайт з www і без
Php: безпека. Підключення файлів.
Створення движка на mvc. Виводимо сторінки. Частина 4.
Створення движка на mvc. Вступ.
Створення движка на mvc. Закінчуємо роботу з чатом.