2011-12-14 89 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);