バグがないか教えて頂きたいです。

「6が得られました。in math」
「処理は終わりました」

と表示させたいのですが、以下のコードでうまくいかない原因を教えて頂けると嬉しいです。
他の表示方法もあると思いますが、phpの練習中のため、他のコードでの表示は希望しておらず、
以下のコードに不具合がある点を教えて頂けると嬉しいです。

<?php

$math = new math();//クラス名
$math->change_a(3);
$math->change_b(4);

$math->exec();

echo "処理は終わりました。<br />";

//クラスを定義する
class math{//←クラスtest

private $a;
private $b;

//a+bをして、a-bをしたものを足して出力する
public function exec(){
$res_add = $this->add();//3 + 4 =7
$res_minus = $this->minus();//3 - 4 = -1
$res_total = $res_add + $res_minus;//6
echo $res_total . "が得られました。in math.";
}
public function change_a($buf){
$this->a = $buf;
}
public function change_b($buf){
$this->b = $buf;
}
}
?>

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:
  • 終了:2020/03/29 20:53:00

ベストアンサー

id:a-kuma3 No.2

回答回数4932ベストアンサー獲得回数2136

ポイント50pt

takさんの回答のまんまですけれど、具体的なコードに落とし込んでみました。
質問にあるコードの最後の方に、6行ほど追加しています。

<?php

$math = new math();//クラス名
$math->change_a(3);
$math->change_b(4);

$math->exec();

echo "処理は終わりました。<br />";

//クラスを定義する
class math{//←クラスtest

    private $a;
    private $b;

    //a+bをして、a-bをしたものを足して出力する
    public function exec(){
        $res_add = $this->add();//3 + 4 =7
        $res_minus = $this->minus();//3 - 4 = -1
        $res_total = $res_add + $res_minus;//6
        echo $res_total . "が得られました。in math.";
    }
    public function change_a($buf){
        $this->a = $buf;
    }
    public function change_b($buf){
        $this->b = $buf;
    }

    // ★ここから後を追加しています
    public function add(){
        return $this->a + $this->b;
    }
    public function minus(){
        return $this->a - $this->b;
    }
}
id:ffss

教えて頂きありがとうございます。
このようにして定義をするのですね!
ご丁寧な解説をありがとうございました!
非常に参考になりました!

2020/03/29 20:52:33

その他の回答1件)

id:TAK_TAK No.1

回答回数1115ベストアンサー獲得回数98

ポイント50pt

このコードをそのまま実行すると

PHP Fatal error: Call to undefined method math::add()

と言うエラーで停止します。

$res_add = $this->add();//3 + 4 =7
$res_minus = $this->minus();//3 - 4 = -1


これらの、 $this->add(); $this->minus();  などが定義されていない事が原因です。

id:ffss

教えて頂き、ありがとうございます。
$this->add(); $this->minus();の定義が必要になるんですね!

どのように定義したらいいのか、と探し回っていました・・・汗

2020/03/29 20:51:42
id:a-kuma3 No.2

回答回数4932ベストアンサー獲得回数2136ここでベストアンサー

ポイント50pt

takさんの回答のまんまですけれど、具体的なコードに落とし込んでみました。
質問にあるコードの最後の方に、6行ほど追加しています。

<?php

$math = new math();//クラス名
$math->change_a(3);
$math->change_b(4);

$math->exec();

echo "処理は終わりました。<br />";

//クラスを定義する
class math{//←クラスtest

    private $a;
    private $b;

    //a+bをして、a-bをしたものを足して出力する
    public function exec(){
        $res_add = $this->add();//3 + 4 =7
        $res_minus = $this->minus();//3 - 4 = -1
        $res_total = $res_add + $res_minus;//6
        echo $res_total . "が得られました。in math.";
    }
    public function change_a($buf){
        $this->a = $buf;
    }
    public function change_b($buf){
        $this->b = $buf;
    }

    // ★ここから後を追加しています
    public function add(){
        return $this->a + $this->b;
    }
    public function minus(){
        return $this->a - $this->b;
    }
}
id:ffss

教えて頂きありがとうございます。
このようにして定義をするのですね!
ご丁寧な解説をありがとうございました!
非常に参考になりました!

2020/03/29 20:52:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません