我正在做一个Laravel项目,它将是一个完整的API项目。我已经为自己编写了一种实现API版本控制的方法。我通过在Laravel架构中添加版本号来构建我的项目。
例如,我正在开发API的V0,我将使用我的模型来处理这个体系结构: App\ models \V0\MyModel
我想知道是否有可能,取决于API的当前版本(在中间件中设置),是否有可能根据use语句中的当前变量加载模型?例如:
use App\Models\V0\User;
是否有可能将"V0“存储到一个变量中,并在" use”中使用它来动态加载模型的好版本?
发布于 2022-02-19 11:22:56
如果您真的想这样做,您可以为您的模型创建一个工厂。
<?php
namespace App\Models;
use App\Models\V0\User as UserV0;
use App\Models\V1\User as UserV1;
class UserFactory {
public static function get(int $version) {
switch($version){
case 0:
return new UserV0();
case 1:
return new UserV1();
}
}
}
而不是用它
<?php
use App\Models\UserFactory;
$version = 0;
$user = UserFactory::get($version);
https://stackoverflow.com/questions/71176312
复制相似问题