0

エラーが発生します:

Notice: Undefined variable: avg

Fatal error: Cannot access empty property in /var/www/html/#####/#####/res/calc_food.php on line 37

これは私のPHPクラスです:

//Base class for food calculator
abstract class Food {

    protected $avg;                                                 //Average per meal
    protected function equation() {return false;}                      //Equation for total

    //Sets
    public function setAverage($newAvg) {
        $this->$avg = $newAvg;
    }

    //Gets
    public function getAverage() {
        return $this->$avg;
    }

    public function getTotal() {
        $total = $this->equation();

        return $total;
    }
}

//Beef/lamb calculator
class Beef extends Food {

    protected $avg = 0.08037;

    protected function equation() {
        return (($this->$avg*14)-$this->$avg)*_WEEKS;                   //=(1.125-(1.125/14))*52.18;
    }
}

それが参照している行:

return (($this->$avg*14)-$this->$avg)*_WEEKS;                   //=(1.125-(1.125/14))*52.18;

これの原因が何であるかはわかりません。スコープで遊んでみました。基本的に、使用する食品の子クラスによって food->getTotal() が異なるように、ベースの平均値と追加された新しい食品ごとの計算式を変更しようとしています。

4

4 に答える 4

1

なしで プロパティにアクセスする必要があります$:

$this->avg
于 2013-04-30T03:55:05.513 に答える
1
$this->$avg 

...最初に $avg を評価し (この場合は何も評価しません)、次に$this オブジェクトでそれを調べます。あなたがしたい:

$this->avg

$this オブジェクトの "avg" プロパティを検索します。

于 2013-04-30T03:55:10.440 に答える
0

$ なしでプロパティを使用:

$this->property 

それ以外の

$this->$property

正しい行:

return (($this->avg*14)-$this->avg)*_WEEKS;    
于 2013-04-30T03:57:00.290 に答える
0

これを試してください:

$this->avg // no $avg
于 2013-04-30T03:55:55.160 に答える