为什么我得到“在非对象上调用成员函数getFloorplan()”?

时间:2012-07-23 22:32:56

标签: php class object

我的php页面中有以下代码:

  $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 个答案:

答案 0 :(得分:5)

将两行更改为:

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

你在变量$ fair中获得了getFair()的结果,该变量与对象的名称相同。所以它只是重写。