一千萬個為什麽

搜索

從屬性getter的返回值實例化類

我今天遇到了一些奇怪的行為,圍繞從getter方法的返回值創建一個對象。

首先我嘗試了這個

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

這給了我一個未定義的屬性:$ getDbMapper錯誤。

從它看起來,它試圖訪問$ getDbMapper作為類屬性,然後使用()進行類實例化而不是方法(?)。

我在另一段代碼中也有這個問題,其中類采用構造函數參數。

這是一個很好的時間來看看頂部的某種工廠模式還是我錯過了一些東西?

最佳答案

我發現了一個修復,我並不是特別滿意

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

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

轉載註明原文: 從屬性getter的返回值實例化類