akbaraditamasp/lego-framework

类似于乐高,这个框架通过组合几个PHP库构建而成。

dev-main 2022-11-01 10:36 UTC

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!"];
    });