やったこと
- 独学エンジニア レッスン4.25-28
- 関数
- 前回までに作成した読書ログサービスのコードについて、関数を用いて、リファクタリングした。
学んだこと
関数の使い方
関数は、定義→呼び出し
で使用する。
関数の定義の仕方
function 関数名(引数1, 引数2, …, 引数n) { # 処理 return 戻り値; }
引数と戻り値は省略できる。
関数の呼び出し方
関数名に括弧を付けて関数を呼び出す。
戻り値がある場合
$変数 = 関数名(引数1, 引数2, ..., 引数n)
戻り値がない場合
関数名(引数1, 引数2, ..., 引数n)
サンプルコード
function multiply($a, $b) { return $a * $b; } echo multiply(3, 5) . PHP_EOL;
実行結果
15
関数を定義するときのコツ
- 変数名を決めて、外枠を作る。
- 呼び出し側を先に書く。
- 処理の内容を書く。
今回書いたコード
<?php // 読書ログ登録の関数を定義 function createReview() { echo '読書ログを登録してください' . PHP_EOL; echo '書籍名:'; $title = trim(fgets(STDIN)); echo '著者名:'; $author = trim(fgets(STDIN)); echo '読書状況(未読、読んでいる、読了):'; $status = trim(fgets(STDIN)); echo '評価(5点満点の整数):'; $score = trim(fgets(STDIN)); echo '感想:'; $summary = trim(fgets(STDIN)); echo '登録が完了しました' . PHP_EOL . PHP_EOL; // 連想配列の各キーに上記にて、変数に代入された値を格納していく。 return [ 'title' => $title, 'author' => $author, 'status' => $status, 'score' => $score, 'summary' => $summary, ]; } // 読書ログ表示の関数を定義 function getReviews($reviews) { echo '読書ログを表示します' . PHP_EOL; foreach ($reviews as $review) { echo '書籍名:' . $review['title'] . PHP_EOL; echo '著者名:' . $review['author'] . PHP_EOL; echo '読書状況:' . $review['status'] . PHP_EOL; echo '評価:' . $review['score'] . PHP_EOL; echo '感想:' . $review['summary'] . PHP_EOL; echo '-----------------' . PHP_EOL; } } // 配列を初期化 $reviews = []; while (true) { echo '1. 読書ログを登録' . PHP_EOL; echo '2. 読書ログを表示' . PHP_EOL; echo '9. アプリケーションを終了' . PHP_EOL; echo '実行したい番号(1,2,9)を入力してください:'; $i = trim(fgets(STDIN)); if ($i === '1') { // 読書ログを登録する $reviews[] = createReview(); } elseif ($i === '2') { // 読書ログを表示する getReviews($reviews); } elseif ($i === '9') { break; } }