定制 imissher/first-sprint 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

imissher/first-sprint

Composer 安装命令:

composer require imissher/first-sprint

包简介

The first attempt to create a framework in pure php

README 文档

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 будет служить главным отправным пунктом, для каждого вашего роута. Примеры работы с роутами:

  1. Обычный get запрос
Route::get('url', 'path/to/file', [NameController::class, 'func_name']);

// последний массив с передачей класса и названия функции необязателен
  1. Для post запросов
Route::post('url', NameController::class, 'func_name');
  1. 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, который имеет примерно следующий список функций:

  1. select() - как и в Sql, функция служит для получения строк из таблицы базы данных.
use App\Services\Database\DBW;

$db = new DBW();

$db->select(['login', 'password'], 'db_name')->get();
  1. 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();
  1. insert() - добавление данных

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

$db->insert(['name' => 'John', 'key' => 'value'], 'db_name');
  1. delete() - удаление нужной строчки из таблицы

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

$db->delete(['key' => 'value'] ,'db_name');
  1. update() - обновление данных строки в БД

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

$db->update(['key' => 'value'], ['id', $id], 'db_name');
  1. join() - метод, который является реализацией операции соединения таблиц.

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

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

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

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

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

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

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

$db->select(['*'], 't1')->like('field', '%text%')->get();
  1. getQuery() - функция, которая покажет как выглядит ваш запрос, не выполняя его. Полезна, чтобы проверить на наличие ошибок в запросе.
$db->select(['*'], 'db_name')->where('id', $id)->getQuery();
//вернет строку

imissher/first-sprint 适用场景与选型建议

imissher/first-sprint 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 11 月 21 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 imissher/first-sprint 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 imissher/first-sprint 我们能提供哪些服务?
定制开发 / 二次开发

基于 imissher/first-sprint 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 6
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2023-11-21