无需使用PHP进行变量赋值即可动态创建对象

Jas*_*wis 6 php class object

我很好奇是否可以在PHP中动态创建一个对象.我以为我以前见过它.当然,我可以将它分配给一个变量,但只是想知道这是否可能.

new className()->someMethod();
Run Code Online (Sandbox Code Playgroud)

当然这会引发语法错误,所以很明显它不是那样做的(如果它甚至可能).我应该把它分配给一个变量,因为我真的没有问题这样做我只是好奇吗?


只是进一步的细节.静态方法实际上不是一个选项,因为我试图这样做的类是PHP的ReflectionMethod类.

zhi*_*ong 10

这种用法在Java中是典型的,但在PHP 5.3之前不可用.现在它是PHP 5.4中的一个新功能.请检查PHP 5.4的新功能.用法应该是:

(new Foo)->bar()
Run Code Online (Sandbox Code Playgroud)


Ale*_*ich 1

仅当您使用单例模式来实例化对象时,这才有效。如果您不知道如何实现单例模式,则必须在网络上搜索。但这样它就可以工作:

className::getInstance()->someMethod();
Run Code Online (Sandbox Code Playgroud)

编辑

正如 zerkms 所说,工厂方法也是可能的:

class ReflectionFactory
{
    public static function factory($arguments)
    {
        return new ReflectionClass($arguments);
    }
}

// Then in your code for example
ReflectionFactory::factory()->getConstants();
Run Code Online (Sandbox Code Playgroud)

  • @jerluc:如果不合适 - 那么工厂可以更换它;-) (2认同)