採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

メソッドを定義する

テクノロジ系 / class (class / new / プロパティ / メソッド / `$this` / コンストラクタ)

メソッドを定義する

Lesson 8 / Chapter 4

メソッドは「クラスの中に書く関数」

<?php
class User {
    public function greet(): void {
        echo "こんにちは\n";
    }
}

$u = new User();
$u->greet();   // → こんにちは
  • クラスの { } の中に function 名前() { ... } を書く
  • 関数 (L7) と同じ書き方だが、所属するクラスがある点が違う
  • public を付けると外から呼べる (ch07 で詳しく)

呼び出しは $obj->method()

<?php
class Book {
    public function show(): void {
        echo "本のメソッドが呼ばれた\n";
    }
}

$b = new Book();
$b->show();
  • プロパティと同じ -> を使う
  • 末尾に () を付ける (引数なしでも省略不可)
  • $obj->method; のように () を忘れるとメソッドが 実行されない

引数も渡せる

<?php
class Calc {
    public function add(int $a, int $b): int {
        return $a + $b;
    }
}

$c = new Calc();
echo $c->add(3, 5) . "\n";  // → 8
  • 関数 (L7) と同じく型を付けられる
  • return で値を返す
  • 戻り値が無い時は : void を付ける慣習

同じクラスから作ったインスタンスはどれも同じメソッドを持つ

<?php
$a = new User();
$b = new User();

$a->greet();   // こんにちは
$b->greet();   // こんにちは
  • メソッドは 設計図に書かれた手順 なので、どのインスタンスから呼んでも同じ振る舞いをする
  • インスタンスごとに 動きを変えたい 時は $this を使う (ch05)

このチャプターでできるようになること

✅ クラス内に function 名前() { ... } でメソッドを書ける

$obj->method() でメソッドを呼べる

✅ メソッドにも引数と戻り値の型を付けられる

✅ 同じクラスから作ったインスタンスはどれも同じメソッドを持つと言える

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — greet メソッドを呼ぶ

問題

User クラスを定義してください。

  • public function greet(): void というメソッドを 1 つ持つ
  • このメソッドは "こんにちは\n"echo するだけ

new User() でインスタンスを作り、greet() を呼んで出力してください。

期待される出力:

こんにちは

採点

php scripts/grade.php topics/class/ch04-methods/drill/01-greet-method/

ヒント

  • function はクラスの { } の中に書く
  • 呼び出しは $u->greet(); のように () を忘れない
  • まだ $this は使わない。固定の文字列を echo するだけ