Laravel 如何调用配置中定义的类

Laravel 如何调用配置中定义的类,laravel,Laravel,正如标题所示,我需要召集一个班 Laravel中的配置文件示例: return [ 'user' => App\User::class ]; 我的问题是,我需要运行非静态方法,但不确定如何运行 i、 e.(new User())->getTable()如果您的配置文件示例配置文件.php: return [ 'user' => App\User::class, ]; 您可以这样调用它,使用new命令创建User模型的实例: $userClass = config(

正如标题所示,我需要召集一个班

Laravel中的配置文件示例:

return [
    'user' => App\User::class
];
我的问题是,我需要运行非静态方法,但不确定如何运行


i、 e.
(new User())->getTable()
如果您的配置文件
示例配置文件.php

return [
    'user' => App\User::class,
];
您可以这样调用它,使用
new
命令创建
User
模型的实例:

$userClass = config('example_config_file.user');
$user = new $userClass();    // blank instance of User model
或者,如果你想使用雄辩的方法:

$userClass = config('example_config_file.user');
$user = $userClass::find(1);    // User model with id = 1
您可以创建一个帮助器类并获得如下任何类型的模型:

class ModelHelper
{
    public static function getModel($type, $id = null)
    {
        $modelClass = config("example_config_file.$type");

        if($id) {
            return $modelClass::find($id);
        }

        return new $modelClass();
    }
}
然后,在代码中,每当需要用户实例时,调用helper类:

$user = ModelHelper::getModel('user');    // get a blank User model
$post = ModelHelper::getModel('post', 1); // get the post with id = 1

是否有一种很好的方法可以从配置中收集所有类?而不是继续运行你建议的两条线路。。。可能使用返回
new$userClass()的自定义类处理程序?不知道你的意思。关键是将类名放入变量中,然后使用该变量实例化该类。有很多方法可以做到这一点,比如创建一个运行这些行的helper函数,然后您可以调用helper。这取决于你到底想做什么。我的配置有多个模型。可以通过
config('my_config.models.user')
访问它们。我的问题是我需要继续写两行。使用helper,我需要编写完整的路径。对于类,我想说一些类似的话:
myClass::getModel('user')->get()
myClass::getModel('user')->getTable()