Files
php-question/Question14-AdvancedInheritance/Ex05.php
2026-10-06 12:10:09 +09:00

54 lines
2.1 KiB
PHP

<?php
/*
* 多態性とインタフェース: メッセージ送信システム
*
* MessageSenderInterface.php、LineMessage.php、SlackMessage.php、MessageService.php を実装してください
*
* 【課題】
* メッセージ送信サービスを作成します。
* LineとSlackの2種類のメッセージ送信方法があります。
* MessageServiceクラスは、インタフェース型を引数で受け取ることで、
* どちらのメッセージ送信方法でも使えるようにします(多態性)。
*
* 【ポイント】
* MessageServiceの sendMessage メソッドは、
* MessageSenderInterface型の引数を受け取ります。
* これにより、LineMessage でも SlackMessage でも、
* 同じメソッドで送信できます(インタフェースの利点)。
*/
require_once __DIR__ . '/common/MessageSenderInterface.php';
require_once __DIR__ . '/common/LineMessage.php';
require_once __DIR__ . '/common/SlackMessage.php';
require_once __DIR__ . '/common/MessageService.php';
use Common\LineMessage;
use Common\SlackMessage;
use Common\MessageService;
// TODO: MessageServiceのインスタンスを生成してください
// 変数名は $service
echo "=== メッセージ送信テスト ===<br><br>";
// TODO: LineMessageのインスタンスを生成してください
// コンストラクタには "山田太郎" を渡してください
// 変数名は $lineMessage
// TODO: $service の sendMessage メソッドを呼び出してください
// 第1引数: $lineMessage
// 第2引数: "会議は10時からです"
// ※ここがポイント!引数の型は MessageSenderInterface なので、
// LineMessage でも SlackMessage でも渡せます
echo "<br>";
// TODO: SlackMessageのインスタンスを生成してください
// コンストラクタには "#general" を渡してください
// 変数名は $slackMessage
// TODO: $service の sendMessage メソッドを呼び出してください
// 第1引数: $slackMessage
// 第2引数: "デプロイが完了しました"
// ※同じ sendMessage メソッドで、SlackMessage も送信できます!