2012-07-23 65 views
0

我有下面的代碼在我的PHP頁面:爲什麼我會「調用一個非對象的成員函數getFloorplan()」?

$fair   = Factory::new_fair_obj(); 
    $fairs   = $fair->getAllFairs(); 
    $fairs_ddl  = createFairDDL($fairs); 
    $first_fair_id = $fairs[0]['id']; 
    $fair   = $fair->getFair($first_fair_id); // <-- works till here 
    $floorplan  = $fair->getFloorplan($first_fair_id); // <-- This is where it breaks 

這是商務艙延伸DAO:

interface iFair { 
    public function getAllFairs(); 
    public function getFair($id); 
    public function getFloorplan($id); 
} 

class Fair extends FairDAO implements iFair { 
    protected $db; 

    function __construct(&$db) { 
    $this->db = $db; 
    } 
    public function getAllFairs(){ 
    return parent::getAllFairs(); 
    } 

    public function getFair($id){ 
    return parent::getFair($id); 
    } 

    public function getFloorplan($id){ 
    return parent::getFloorplan($id); 
    } 
} 

調用getFair()工作正常。但在下一行調用getFloorplan()不起作用。

怎麼回事?

+1

以下行之後$ fair所持有的新價值是什麼? $ fair = $ fair-> getFair($ first_fair_id); – 2012-07-23 22:37:12

+0

因爲getFair()不會返回您所期望的。 – Hamish 2012-07-23 22:37:16

回答

5

更改兩行這樣的:

$fair1   = $fair->getFair($first_fair_id); // <-- works till here 
$floorplan  = $fair->getFloorplan($first_fair_id); // <-- This is where it breaks 

你得到getFair的變量$公平是同一個對象的名稱()的結果。所以它只是被覆蓋。

+0

您在變量$ fair中獲取getFair()的結果,該變量與對象的名稱相同。所以它只是被覆蓋。 – Kalpesh 2012-07-23 22:38:38

+0

點擊您帖子下方的修改鏈接。您應該將該評論添加到您帖子的底部。這樣,沒有字符限制,你可以修改和更好的答案。 – 2012-07-23 22:45:21

+0

啊....謝謝。我一直在工作超過13個小時......所以我對自己的代碼有些盲目。謝謝:) – Steven 2012-07-23 22:45:43

相關問題