需要转换字符串名称空间一个StdClass

问题描述 投票:-1回答:1

我使用这个名称空间

use \App\Model\PostsModel;

和我试图访问类像这样的另一个类:

public $model = PostsModel::class;

该出把vardump的是“应用程序\型号\ PostsModel”和vardump显示,它的类型为字符串。

我寻觅了很多,但我怎么也找不到投/串转换成stdClass的。这是我曾尝试:

$model = \App\Model\PostsModel;

我还尝试了它的一个实例

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

我vardump是:

vardump($this->model);

这表明我的命名空间的地址是正确的

php stdclass
1个回答
1
投票

问题是你试图访问类没有实例之前。

ClassName::classis总是值的字符串,而不是这个类的一个实例。

您可以指定类名(字符串)的变种,然后创建一个类的新实例只使用该变量。请参阅下面的例子。

<?php

use \App\Model\PostsModel;

class OtherClass {
    public $model;

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

        $instance = new $this->model();
        $instance->callSomeMethod();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.