необходимо преобразовать пространство имен строки в стандартный класс - PullRequest
0 голосов
/ 09 февраля 2019

Я использую это пространство имен

use \App\Model\PostsModel;

, и я пытаюсь получить доступ к классу, как это в другом классе:

public $model = PostsModel::class;

выход vardump is "App \ Model \ PostsModel "и vardump показывает, что это строковый тип.

Я много искал, но не смог найти способ приведения / преобразования строки в stdclass.Это то, что я пробовал:

$model = \App\Model\PostsModel;

Я также пытался получить его экземпляр

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

Мой vardump:

vardump($this->model);

, который показывает, чтомои адреса пространства имен верны

1 Ответ

0 голосов
/ 10 февраля 2019

Проблема в том, что вы пытаетесь получить доступ к классу без создания экземпляров ранее.

Значение из ClassName::class всегда является строкой, а не экземпляром этого класса.

Вы можете назначитьимя класса (строка) для переменной, а затем создать новый экземпляр класса, просто используя эту переменную.Смотрите следующий пример.

<?php

use \App\Model\PostsModel;

class OtherClass {
    public $model;

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

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