【发布时间】:2011-06-07 05:02:27
【问题描述】:
正如标题所说,我想从同一个类的静态方法中创建一个类的实例。到目前为止,我发现我可以通过这样做:
class Foo{
public $val;
public static function bar($val){
$inst = new Foo;
$inst->val = $val;
return $inst;
}
}
因此让我这样做。
$obj = Foo::bar("some variable");
这太棒了。
现在是问题。有没有我不知道的更简单的方法,或者有什么捷径可以达到相同的结果?以这种方式创建实例有什么优点或缺点吗?
谢谢。
【问题讨论】:
-
您这样做的原因是什么?为什么不使用普通的
$obj = new Foo("some variable");? -
对我来说,用在某个时候已经创建的构造函数创建一些东西是没有意义的。例如,在当前项目中,我使用 Profile::get() 加载(在某些时候)已经“构建”的配置文件。也许我在滥用构造函数或使用它作为重载的答案。