名称在变量中的新对象

时间:2018-08-13 08:37:12

标签: php laravel class object model

我正在尝试使用动态路径初始化对象。我有模型名称的变量$model

$model = "foo";
$class = new \Path\To\$model();

我得到了错误

Parse error: syntax error, unexpected '$model' (T_VARIABLE), expecting identifier (T_STRING)

如果我尝试$class = new \Path\To\{$model}(); 我收到错误

 Parse error: syntax error, unexpected '{', expecting identifier (T_STRING)

当我尝试

namespace \App\Models
$class = new $model(); 

我收到错误Class 'foo' not found

当我尝试$class = new \Path\To\foo();时,它会起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试:

$class = "\Path\To\foo";
$object = new $class();

或者:

use Path\To\foo;
$class = foo::class;
$object = new $class();

答案 1 :(得分:1)

您可以将路径存储在变量中:

$path = "\Path\To\\";

然后生成这样的类名:

$className = $path.$model;
$class = new $className();