需要将字符串名称空间转换为stdclass

时间:2019-02-09 17:47:31

标签: php stdclass

我正在使用此名称空间

use \App\Model\PostsModel;

并且我正在尝试在另一个类中访问此类:

public $model = PostsModel::class;

vardump的输出为“ App \ Model \ PostsModel”,vardump显示其类型为字符串。

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

$model = \App\Model\PostsModel;

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

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

我的礼物是:

vardump($this->model);

表明我的名称空间地址正确

1 个答案:

答案 0 :(得分:1)

问题是您试图访问该类而不先实例化。

ClassName::class中的值始终是一个字符串,而不是该类的实例。

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

<?php

use \App\Model\PostsModel;

class OtherClass {
    public $model;

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

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