imissher / first-sprint
纯PHP创建框架的第一次尝试
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
文件将是每个路由的主要出发点。以下是路由操作的示例
- 常规
get
请求
Route::get('url', 'path/to/file', [NameController::class, 'func_name']); // последний массив с передачей класса и названия функции необязателен
- 对于
post
请求
Route::post('url', NameController::class, 'func_name');
- 中间件
所有权限限制规则都位于 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 中的 select,该函数用于从数据库表中选择行。
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()
第一个参数指定要排序的字段,第二个参数指定排序方式 [升序 | 降序]
$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(); //вернет строку