需要将字符串命名空间转换为标准类

need to convert string namespace to stdclass

我正在使用这个名字space

use \App\Model\PostsModel;

我正在尝试在另一个 class 中像这样访问 class :

public $model = PostsModel::class;

vardump的输出是"App\Model\PostsModel",vardump表明它的类型是字符串。

我搜索了很多,但找不到如何将 cast/convert 字符串转换为 stdclass。这是我试过的:

$model = \App\Model\PostsModel;

我也试过获取它的一个实例

public $model = new \App\Model\PostsModel;  
public $model = new PostsModel::class; 

我的转储是:

vardump($this->model);

这表明我的名字space 地址是正确的

问题是您试图在没有实例化的情况下访问 class。

来自 ClassName::class 的值始终是字符串,而不是 class 的实例。

您可以将 class 名称(字符串)分配给一个变量,然后使用该变量创建 class 的新实例。请参阅下一个示例。

<?php

use \App\Model\PostsModel;

class OtherClass {
    public $model;

    public function callOther() {
        $this->model = PostsModel::class;

        $instance = new $this->model();
        $instance->callSomeMethod();
    }
}