Я пытаюсь найти способ легко привести динамически созданный объект, чтобы я мог видеть его свойства и открытые методы в моей IDE. Это выглядит странно, когда строка содержит полностью определенное пространство имен.
Есть ли в любом случае я могу привести объекты из константной строки в абстрактный класс?
abstract class Models
{
const MODEL = "foo\\bar\\Model";
}//OK
$p1 = "foo\\bar\\Model";
$p2 = new $p1;
//FAILS
//$wannaDoThis = (Models::MODEL) Generator::generate(Models::MODEL);//$str1 = Models::MODEL;
//$str2 = (string) Models::MODEL;
//$o1 = new Models::MODEL;
//$o2 = new "".Models::MODEL;
//$o3 = new (Models::MODEL);
Это должно работать:
<?php
namespace foo\bar;
class Model
{
}
namespace SomeOtherNamespace;
abstract class Models
{
const MODEL = "foo\\bar\\Model";
}
$class = Models::MODEL;
$x = new $class();
var_dump($x);
Который вы можете увидеть здесь https://3v4l.org/87sKs
Других решений пока нет …