PHP PHP入門講座 プログラミング

【PHPプログラミング入門講座】[解答と解説] ファイルの分割とファイルの読み込み

PHPプログラミングのキービジュアル

[解答と解説] ファイルの分割とファイルの読み込み

前ページの練習問題「【PHPプログラミング入門講座】[練習問題] ファイルの分割とファイルの読み込み」の解答&解説です。
練習問題が解けたら、このページで答え合わせをしてみましょう!

練習問題1

次のようなHTMLファイルが2つあります。

ファイル名:index.html

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>テストページ</title>
  </head>
  <body>
    <h1>テストページ</h1>
    <p><a href="index2.html">次のページへ</a></p>
  </body>
</html>

ファイル名:index2.html

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>テストページ</title>
  </head>
  <body>
    <h1>テストページ</h1>
    <p>次のページに遷移しました。</p>
  </body>
</html>

練習問題1-1

ファイル名をindex.html → index.php、index2.html → index2.php に変更して、index.php内の「次のページへ」リンクをクリックすると、index2.phpに画面遷移するようにしてください。

練習問題1-1の解答と解説

<解答>

まず、問題に書いているとおりですが、ファイル名をindex.html → index.php、index2.html → index2.php に変更しましょう。
後は、HTMLのAタグのリンクを次のように変更する必要があります。

修正前

    <p><a href="index2.html">次のページへ</a></p>

修正後

    <p><a href="index2.php">次のページへ</a></p>

<解説>

HTMLファイルの拡張子を.phpに変更するだけでPHPプログラムは組み込まれていない状態でも、ページは表示できます。
あと、ファイル名を修正したら、リンク関係の修正を忘れないようにしましょう。

練習問題1-2

index.phpとindex2.phpの中にある<p>タグの文章より上の共通内容をheader.phpというファイルに記述して、include関数でheader.phpを読み込んでください。
また、<p>タグの文章より下の共通内容をfooter.phpというファイルに記述して、include関数でfooter.phpを読み込んでください。

練習問題1-2の解答と解説

<解答>

次の4ファイルが作成されていれば正解です。

ファイル名:header.php

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>テストページ</title>
  </head>
  <body>
    <h1>テストページ</h1>

ファイル名:footer.php

  </body>
</html>

ファイル名:index.php

<?php include('header.php'); ?>
    <p><a href="index2.php">次のページへ</a></p>
<?php include('footer.php'); ?>

ファイル名:index2.php

<?php include('header.php'); ?>
    <p>次のページに遷移しました。</p>
<?php include('footer.php'); ?>

<解説>

include関数、include_once関数、require関数、require_once関数などがありますが、HTMLファイルを読み込む場合は、include関数を使うのが一般的です。
詳しい理由は、前の記事「【PHPプログラミング入門講座】ファイルの分割とファイルの読み込み」に書いていますので、もし覚えていないという人は、再確認しましょう。

練習問題1-3

「テストページ」という文字列が同じファイル内の複数箇所に書かれているため、PHPの変数を使って「テストページ」という文字列を1回だけ書けば良いように修正してください。

練習問題1-3の解答と解説

<解答>

header.phpの内容を次のように修正すれば正解です。

<?php
  $title = 'テストページ';
?>
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title><?= $title; ?></title>
  </head>
  <body>
    <h1><?= $title; ?></h1>

なお、変数名は指定していませんので、「$title」を別の変数名にしてもOKです。
また、「<?= $title; ?>」の部分は、「<?php echo $title; ?>」と書いてもOKです。

<解説>

<title>に書かれたタイトルと<h1>に書かれたページタイトルが共通の文字列の場合は、変数を使えば、タイトル変更が必要になった場合に2箇所修正する必要がなくなります。
常にタイトルとページタイトルが同じ文字列になることが保証されるため、バグ(プログラムのミス)が発生しにくいプログラムになります。

練習問題2

次の[関数A]、[関数B]、[関数C]に当てはまる関数名を答えてください。

関数名 説明
include ファイルを読み込みます。
ファイルが存在しない場合は警告(warning)を表示。
[関数A] ファイルを1回だけ読み込みます。
2回目に同じファイルを指定した場合は読み込みません。
ファイルが存在しない場合は警告(warning)を表示。
[関数B] ファイルを読み込みます。
ファイルが存在しない場合は致命的エラー(fatal error)を表示。
[関数C] ファイルを1回だけ読み込みます。
2回目に同じファイルを指定した場合は読み込みません。
ファイルが存在しない場合は致命的エラー(fatal error)を表示。

練習問題2の解答と解説

<解答>

次の通りです。

[関数A] include_once
[関数B] require
[関数C] require_once

<解説>

似たような関数が4種類ありますが、一般的にHTMLソースなどの共通ファイルの読み込みの場合はinclude関数、共通のPHPプログラムの処理が書かれているファイルの読み込みはrequire_once関数が使われています。
詳しい理由は、前の記事「【PHPプログラミング入門講座】ファイルの分割とファイルの読み込み」に書いていますので、もし覚えていないという人は、再確認しましょう。

おわりに

お疲れ様でした。
いかがでしたでしょうか?

もし間違えた練習問題がありましたら、前の記事「【PHPプログラミング入門講座】ファイルの分割とファイルの読み込み」戻って読み直し、再度、練習問題にチャレンジしてください。

正解できた人は、おめでとうございます!
次の記事に進んでいきましょう!

PHPプログラミング入門講座 〜 全記事一覧 〜

-PHP, PHP入門講座, プログラミング
-, , , ,

Copyright© ハッピー・プログラミング・ライフ , 2020 All Rights Reserved.