imissher/first-sprint

此包最新版本(v1.0)没有提供许可证信息。

纯PHP创建框架的第一次尝试

安装: 2

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:框架

v1.0 2023-11-21 08:30 UTC

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!

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. 中间件

所有权限限制规则都位于 app\Services\Middleware\Kernel.php 类中。从一开始工作,将提供 guestauth 等规则。根据需要,您可以随时添加所需的规则!

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 中的 select,该函数用于从数据库表中选择行。
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();

该函数还可以使用 INANDOR 创建条件。示例

$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()

第一个参数指定要排序的字段,第二个参数指定排序方式 [升序 | 降序]

$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();
//вернет строку