PHPackages                             imissher/first-sprint - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. imissher/first-sprint

ActiveFramework[Framework](/categories/framework)

imissher/first-sprint
=====================

The first attempt to create a framework in pure php

v1.0(2y ago)06PHP

Since Nov 21Pushed 2y ago1 watchersCompare

[ Source](https://github.com/algrvvv/FirstSprint)[ Packagist](https://packagist.org/packages/imissher/first-sprint)[ RSS](/packages/imissher-first-sprint/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)DependenciesVersions (3)Used By (0)

FirstSprint
===========

[](#firstsprint)

### FirstSprint - это моя первая попытка создать фреймворк, подобие фреймворка на чистом PHP. Вдохновленный идеями `Laravel`, поэтому где-то названия функций и классов могут пересекаться XD

[](#firstsprint---это-моя-первая-попытка-создать-фреймворк-подобие-фреймворка-на-чистом-php-вдохновленный-идеями-laravel-поэтому--где-то-названия-функций-и-классов-могут-пересекаться-xd)

 [![](https://camo.githubusercontent.com/6d8f00c5adcad3377923644d28c870f34aa0255974acbcacfc5a0e45ae810e00/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707572652532307068702532302d384132424532)](https://camo.githubusercontent.com/6d8f00c5adcad3377923644d28c870f34aa0255974acbcacfc5a0e45ae810e00/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707572652532307068702532302d384132424532) [ ![](https://camo.githubusercontent.com/01770246ba7288185f44b3583d8d6db62b7836bf76cf6ac0dc87c0bd7afa83c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7061636b61676973742d76312e302d626c7565) ](https://packagist.org/packages/imissher/first-sprint)

> Сразу хочу сказать, что так как это первый опыт, то не исключены какие либо баги, недоработки. Проект пишется для практики и более глубокого понимания концепции работы языка и WEB технологий в принципе. Спасибо за внимание!

### Установка

[](#установка)

Для установки проекта необходимо написать в командную строчку

```
git clone https://github.com/algrvvv/FirstSprint.git
```

или через `composer`

```
composer require imissher/first-sprint
```

> После установки обязательно сделать установку композера!

```
composer i
```

### Работа с роутами

[](#работа-с-роутами)

Файл `routes/web.php` будет служить главным отправным пунктом, для каждого вашего роута. Примеры работы с роутами:

1. Обычный `get` запрос

```
Route::get('url', 'path/to/file', [NameController::class, 'func_name']);

// последний массив с передачей класса и названия функции необязателен
```

2. Для `post` запросов

```
Route::post('url', NameController::class, 'func_name');
```

3. 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]);
        //массив значений не обязательный параметр
    }
}
```

Чтобы потом работать с переменными, которые вы передали на страницу читайте [это](#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D1%80%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B0)

### Работа с сессиями

[](#работа-с-сессиями)

Обычная работа с сессиями:

```
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`, который имеет примерно следующий список функций:

1. `select()` - как и в Sql, функция служит для получения строк из таблицы базы данных.

```
use App\Services\Database\DBW;

$db = new DBW();

$db->select(['login', 'password'], 'db_name')->get();
```

2. `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();
```

3. `insert()` - добавление данных

Очень важно понимать, что передавать нужно ассоциативный массив данных.

```
$db->insert(['name' => 'John', 'key' => 'value'], 'db_name');
```

4. `delete()` - удаление нужной строчки из таблицы

Очень важно понимать, что передавать нужно ассоциативный массив данных. В этом случае массив послужит условием для удаления.

```
$db->delete(['key' => 'value'] ,'db_name');
```

5. `update()` - обновление данных строки в БД

Первым параметром передается ассоциативный массив, в котором лежат данные, которые мы хотим обновить. Вторым параметром условия для обновления. К примеру, найти того самого пользователя, у которого мы хотим обновить данные.

```
$db->update(['key' => 'value'], ['id', $id], 'db_name');
```

6. `join()` - метод, который является реализацией операции соединения таблиц.

Первым параметром передаем массив условий для соединения, а вторым назавание таблицы бд, с которой мы хотим соверишить соединение.

```
$db->select(['*'], 't1')->join(['t1.id' => 't2.t1_id'], 't2')->get();
```

7. `orderBy()`

Приниамает первым параметром поле, по которому вы хотите сортировать, а вторым парметром - \[ASC | DESC\]

```
$db->select(['*'], 't1')->orderBy('field', 'ASC')->get();
```

8. `groupBy()`

Передается название поля, по которому вы хотите сгруппировать ваш запрос

```
$db->select(['*'], 't1')->groupBy('field')->get();
```

9. `like()`

Первый параметр - поле, по которому вы хотите произвести поиск. Второй параметр - значение, котрые вы хотите найти

```
$db->select(['*'], 't1')->like('field', '%text%')->get();
```

10. `getQuery()` - функция, которая покажет как выглядит ваш запрос, не выполняя его. Полезна, чтобы проверить на наличие ошибок в запросе.

```
$db->select(['*'], 'db_name')->where('id', $id)->getQuery();
//вернет строку
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

909d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1d42f35272d692d1ea382fe62b26e3ffa179668e1b23e2e4bfe1ca2971d47219?d=identicon)[i miss her](/maintainers/i%20miss%20her)

---

Top Contributors

[![algrvvv](https://avatars.githubusercontent.com/u/121817930?v=4)](https://github.com/algrvvv "algrvvv (13 commits)")

---

Tags

frameworkphp

### Embed Badge

![Health badge](/badges/imissher-first-sprint/health.svg)

```
[![Health](https://phpackages.com/badges/imissher-first-sprint/health.svg)](https://phpackages.com/packages/imissher-first-sprint)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
