akbaraditamasp / lego-framework
类似于乐高,这个框架通过组合几个PHP库构建而成。
Requires
- bramus/router: ~1.6
- endyjasmi/cuid: 2.*
- firebase/php-jwt: ^6.3
- illuminate/database: ^9.36
- medz/cors: ^1.5
- rakit/validation: ^1.4
- robmorgan/phinx: ^0.13.1
- sabre/http: ~5.0.0
- vlucas/phpdotenv: ^5.5
This package is auto-updated.
Last update: 2024-09-29 06:20:32 UTC
README
由几个库组合而成的PHP框架。
安装
composer create-project akbaraditamasp/lego-framework:dev-main example-app
然后在终端运行以下命令以启动本地主机Web服务器。
php adel run
路由
路由文件位于 public/index.php
Lego中的路由使用bramus/router库。以下是一个简单的示例。
$app->route("GET", "/", function() { return ["message" => "Hello World!"]; });
路由处理器还可以引用控制器方法。
$app->route("GET", "/", "Controller\\Welcome::index");
更多详细信息,请访问bramus/router文档。
控制器
在Lego中,控制器是处理HTTP请求的默认方式。它们使您可以通过将所有内联路由处理器移动到它们的专用控制器文件中,清理路由文件。
Lego中的控制器存储在(但不限于)controllers/
目录中,每个文件代表一个控制器。例如
<?php namespace Controller; use Lego\App; class Welcome { public static function index(App $app) { return ["message" => "Hello World!"]; } }
创建控制器命令
您可以使用以下php adel
命令创建一个新的控制器。
php adel make:controller Post
请求
Lego中使用sabre.io/http库进行请求。
您可以从传递给路由处理器的HTTP上下文中访问request
对象。
$app->route("GET", "/", function(App $app) { $body = $app->request->getPostData(); });
响应
Lego中使用sabre.io/http库进行响应。
您可以从传递给路由处理器的HTTP上下文中访问response
对象。
$app->route("GET", "/", function(App $app) { $app->response->setStatus(200); $app->response->setHeader("Content-Type", "application/json"); $app->response->setBody(json_encode([ "message" => "Hello World!" ])); $app->finish(); });
文件上传
Lego提供了一个处理文件上传的API。
您可以使用$app->request->getFiles()
方法访问文件。
$app->route("POST", "/", function(App $app) { $image = $app->request->getFiles()["image"]; $image->move(__DIR__); });
验证
Lego使用rakit/validation库进行验证。例如
$app->route("POST", "/", function(App $app) { $app->validate([ 'name' => 'required', 'email' => 'required|email', 'password' => 'required|min:6', 'confirm_password' => 'required|same:password', 'avatar' => 'required|uploaded_file:0,500K,png,jpeg', 'skills' => 'array', 'skills.*.id' => 'required|numeric', 'skills.*.percentage' => 'required|numeric', ]); });
数据库
Lego使用Eloquent作为ORM。
您可以在.env
文件中设置数据库配置
创建您的第一个模型
php adel make:model Post
您还可以通过定义-m
标志来在模型生成迁移。
php adel make:model Post -m
迁移
Lego使用phinx作为模式迁移。
您可以通过运行以下Adel命令创建一个新的迁移。迁移文件存储在db/migrations
目录中。
php adel migration create Post
运行和回滚
一旦创建了所需的迁移文件,您就可以运行以下Adel命令来处理迁移。例如
php adel migration migrate
您可以使用回滚命令撤销Phinx执行的前一个迁移。
php adel migration rollback
认证
默认情况下,Lego使用User和UserLogin模型进行认证过程。
您可以使用Auth::make
方法为用户生成API令牌。
$app->route("POST", "/login", function(App $app) { $user = User::find(1); return Auth::make($user); });
您可以使用$app->auth()
方法保护路由不受未经认证的请求。
$app->route("GET", "/", function(App $app) { $app->auth(); return ["message" => "Hello World!"]; });
或者,您希望使认证可选
$app->route("GET", "/", function(App $app) { $app->auth(false); return ["message" => "Hello World!"]; });
您可以通过$app->user
访问用户数据
$app->route("GET", "/", function(App $app) { $username = $app->user->username; return ["message" => "Hello World!"]; });