您如何从const字符串名称空间中铸造



im试图找出一种轻松施放动态创建的对象的方法,以便我可以在IDE中看到其属性和曝光方法。当字符串包含一个完全合格的名称空间时,它似乎很奇怪。

无论如何,我可以在抽象类中从const字符串中施放对象??

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 foobar;
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

最新更新