2011-12-14 74 views
0

今天我发现了一些奇怪的行为,从getter方法的返回值创建一个对象。从属性获取器的返回值实例化类

首先我想这

$productMapper = new $this->getDbMapper(); 

这给了我一个未定义的属性:$ getDbMapper错误。

从它看起来,它试图访问$ getDbMapper作为类属性,然后使用()为类实例化,而不是作为方法(?)。

我在代码的另一部分中也遇到了这个问题,其中类需要构造函数参数。

这是一个好的时间来看看顶部的某种工厂模式还是我只是想念一些东西?

+0

是否`$ productMapper =新的$此 - > {getDbMapper()};`工作?另外,你可以设置一个CodePad或显示问题的东西吗? – alex 2011-12-14 07:11:39

回答

0

我找到了解决,这我不是特别满意

$mapper = $this->getDbMapper(); 
$productMapper = new $mapper(); 

// With a class constructor 
$form = $this->getForm(); 
$form = new $form($productData);