流明:使用动作路由

Lumen: Routing using action

在我的公司,我们使用构建在 Lumen 之上的框架。我们不写路线。我们写动作。

例如:

app/api/Food/AddFoodAction.php
app/api/food/EditFoodAction.php

在你打的Postman里,如果你要加菜的话

{{host}}/api/food/AddFood
{{host}}/api/food/EditFood

一个典型的动作是这样的

class AddFoodAction
{
    protected $verbs = ['POST'];    
    public $inputRules = [
    'name' => 'required',
    'description' => ''
    ];
    public function execute()
    {
        $name = $this->request->get('name');

        try {
            ...

            return $this->response->statusOk();
        }
        catch(\Exception $ex) {
            return $this->response->statusFail("");
        }
    }
}

我只对其中的路由部分感兴趣,从不编写路由,只编写操作的想法。我想在其他项目中使用相同的概念,而不必使用我公司使用的框架。

你知道这是怎么做到的吗?我搜索了动态路由,但那不是动态路由,你知道使用的概念名称是什么吗?

我想这是用动态 class 名称完成的,您将有一个 'real' 端点捕获所有参数,然后使用此信息您可以生成完整的类路径。

例如,如果您导航到 {{host}}/api/food/AddFood,您的代码将提取 /food/AddFood 部分。然后解析这部分,因此它生成 app/api/Food/AddFoodAction(即通过驼峰式大小写和 /app/api 前缀)匹配命名空间 + class 名称。

如果它存储在变量中,您可以动态调用它 class,它会产生如下内容:

// this would be dynamically build, but is hardcoded to illustrate the example
$className = "\app\api\Food\AddFoodAction";
$action = $className();
$action->execute();

希望对您有所帮助,有任何问题欢迎随时提问!

P.S。请注意名称需要使用 命名空间 而不是文件夹路径