需要将字符串命名空间转换为标准类
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();
}
}
我正在使用这个名字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();
}
}