Пишем свой феймворк
- Создаем файловую структуру MVC.
- Создаем файл .htaccess : прописываем настройки apache
- Создаем точку входа в приложение index.php :
a) Реализуем автозугрузку в точке входа.
b) Запускаем сессию.
с) Разбиваем url на массив - Создаем Router: в методе route разбираем url на имя контроллера, его действие и параметры
Пример: http://localhost/pilot/users/show/1
Имя контроллера UsersController, экшен - show, параметр - 1 - Дополняем Application
- Создаем Controller
- Создаем View таким образом, чтобы в нем были необходимые методы для работы с интерфейсом + метод render
- Делаем дефолтный layout + вид для HomeController
- Одна из сложных частей: паттерн singleton БД:
a) Создаем класс DB
b) Инкапсулируем свойства и метод конструктора
c) Заполняем класс нужными методами - Создаем класс Model:
a) Разбираемся со свойствами класса (нужны статические свойства: сама бд, название таблицы + softDeletes)
b) В конструкторе разбираемся с modelName property
c) Реализуем методы класса Model,чтобы они были на уровень выше методов класса DB. - Создаем класс Filesystem
- Создаем новую директорию под Validators:
a) Создаем абстрактный класс Validator
b) Создаем классы валидации, которые нам нужны. - Классы Session и Cookie для непосредственной работы с ними.
- Класс Input, в основном для проверки метода запроса.
-
Все функции-хелперы находятся в директории /lib/helpers
Написание моделей, контроллеров и представлений на основе фреймворка.
-
HomeController, что редиректит нас на home
-
Модели пользователя и логина.
Модель логина принимает только валидацию. Наполняем модель пользователя необходимыми методами. -
В моем случае RegisterController берет на себя роль не только регистрации, но и логина (в том числе logout)
-
ProfileController возвращает представление залогиненного пользователя.
-
!!! На данный момент логику работы с файлами я оставил в ProfileController (что не есть верно, нарушение принципа SOLID)
-
Добавлен русский язык (!необходимо в дальнейшем переделать и опробовать другой подход)
Для того, чтобы запустить проект, необходимо:
-
Запустить XAMPP
-
Заходим на /localhost/phpmyadmin/
-
Создаем БД (у меня) pilot
-
Сгенерировать таблицу:
CREATE TABLEusers
(id
int(11) NOT NULL AUTO_INCREMENT,username
varchar(150) NOT NULL,email
varchar(150) NOT NULL,fname
varchar(150) NOT NULL,lname
varchar(150) NOT NULL,password
varchar(255) NOT NULL,file
varchar(500) DEFAULT NULL,created_at
timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),deleted
tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (id
), UNIQUE KEYusername
(username
), UNIQUE KEYemail
(email
) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 -
Если у вас другие данные БД, то их можно спокойно найти в /app/config/config.php
-
Заходим на /localhost/pilot/