我正在使用此名称空间
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);
表明我的名称空间地址正确
答案 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();
}
}