我很好奇是否可以在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)
仅当您使用单例模式来实例化对象时,这才有效。如果您不知道如何实现单例模式,则必须在网络上搜索。但这样它就可以工作:
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)