メソッドを定義する
テクノロジ系 / 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するだけ