imissher / first-sprint
The first attempt to create a framework in pure php
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:framework
This package is auto-updated.
Last update: 2024-09-21 12:32:14 UTC
README
FirstSprint - это моя первая попытка создать фреймворк, подобие фреймворка на чистом PHP. Вдохновленный идеями Laravel
, поэтому где-то названия функций и классов могут пересекаться XD
Сразу хочу сказать, что так как это первый опыт, то не исключены какие либо баги, недоработки. Проект пишется для практики и более глубокого понимания концепции работы языка и WEB технологий в принципе. Спасибо за внимание!
Установка
Для установки проекта необходимо написать в командную строчку
git clone https://github.com/algrvvv/FirstSprint.git
или через composer
composer require imissher/first-sprint
После установки обязательно сделать установку композера!
composer i
Работа с роутами
Файл routes/web.php
будет служить главным отправным пунктом, для каждого вашего роута.
Примеры работы с роутами:
- Обычный
get
запрос
Route::get('url', 'path/to/file', [NameController::class, 'func_name']); // последний массив с передачей класса и названия функции необязателен
- Для
post
запросов
Route::post('url', NameController::class, 'func_name');
- Middleware's
Все правила по ограничению прав находяться в классе app\Services\Middleware\Kernel.php
. С самого начала работы, будут доступны такие как guest
и auth
. По желанию их всегда можно дополнить нужными для вас правилами!
Route::middleware([ 'url' => 'rule' ]);
Функция fallback
яв-ся необходимой для работы сайта, так что убрав ее, сайт может попрасту перестать работать D:
Отображение странц
Для отображения вашей страницы нужно добавить роут, а так же создать сам шаблон вашей страницы.
Обязательным яв-ся то, что все ваши шаблоны должны быть расширением .php, иначе они не будут восприниматься и будет выдавать ошибку
Его следует создавать по в папке views
. Все папки создаваемые в ней, должны указываться в пути для отображения вашей страницы.
Для отображения вашей страницы через контроллеры или отображения на странцие кусочка другого шаблона, можно использовать заранее заготовленный класс View
.
use App\Services\Views\View; class NameController { public function func_name() { //some code View::render('path/to/view', ['variable name' => $value]); //массив значений не обязательный параметр } }
Чтобы потом работать с переменными, которые вы передали на страницу читайте это
Работа с сессиями
Обычная работа с сессиями:
use App\Services\Session\Session; $s = new Session(); $s->create_session('name', $value); // создание $s->get_session('name'); // получение $s->unset_session('name'); // удаление
Получение данных после редиректа
Чтобы получить данные на странице шаблона, котрые вы например получили при выборке из БД в своем контроллере, достаточно лишь в начале вашего шаблона открыть тег php
импортировать класс Session
и с помощью функции получить нужные данные.
use App\Services\Session\Session; $s = new Session(); $s->get_session('varible_name');
Работа с базой данных
Чтобы подключить базу данных, необходимо ввести данные для подключения в
app\Services\Database\DBW.php
private string $DB_HOST = 'localhost'; private string $DB_PORT = '3306'; private string $DB_NAME = "db_name"; private string $DB_USERNAME = "db_username"; private string $DB_PASSWORD = "db_password";
Для более удобной работы с БД был написан класс DBW
, который имеет примерно следующий список функций:
select()
- как и в Sql, функция служит для получения строк из таблицы базы данных.
use App\Services\Database\DBW; $db = new DBW(); $db->select(['login', 'password'], 'db_name')->get();
where()
- создание условия для выборки.
use App\Services\Database\DBW; $db = new DBW(); $db->select(['*'], 'db_name')->where('id', $id)->get();
Для нескольких условий можно использовать:
$db->select('...')->where('id', $id)->where('email', $email)->get();
Также функция может создавать условия, используя IN
, AND
, OR
.
Пример:
$db->select(['*'], 'db_name')->where('id', $arr_id, separator: 'IN')->get();
insert()
- добавление данных
Очень важно понимать, что передавать нужно ассоциативный массив данных.
$db->insert(['name' => 'John', 'key' => 'value'], 'db_name');
delete()
- удаление нужной строчки из таблицы
Очень важно понимать, что передавать нужно ассоциативный массив данных. В этом случае массив послужит условием для удаления.
$db->delete(['key' => 'value'] ,'db_name');
update()
- обновление данных строки в БД
Первым параметром передается ассоциативный массив, в котором лежат данные, которые мы хотим обновить. Вторым параметром условия для обновления. К примеру, найти того самого пользователя, у которого мы хотим обновить данные.
$db->update(['key' => 'value'], ['id', $id], 'db_name');
join()
- метод, который является реализацией операции соединения таблиц.
Первым параметром передаем массив условий для соединения, а вторым назавание таблицы бд, с которой мы хотим соверишить соединение.
$db->select(['*'], 't1')->join(['t1.id' => 't2.t1_id'], 't2')->get();
orderBy()
Приниамает первым параметром поле, по которому вы хотите сортировать, а вторым парметром - [ASC | DESC]
$db->select(['*'], 't1')->orderBy('field', 'ASC')->get();
groupBy()
Передается название поля, по которому вы хотите сгруппировать ваш запрос
$db->select(['*'], 't1')->groupBy('field')->get();
like()
Первый параметр - поле, по которому вы хотите произвести поиск. Второй параметр - значение, котрые вы хотите найти
$db->select(['*'], 't1')->like('field', '%text%')->get();
getQuery()
- функция, которая покажет как выглядит ваш запрос, не выполняя его. Полезна, чтобы проверить на наличие ошибок в запросе.
$db->select(['*'], 'db_name')->where('id', $id)->getQuery(); //вернет строку