[解答と解説] ファイルの分割とファイルの読み込み
前ページの練習問題「【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で開発された有名なWebサイト
- PHPでどのような機能が作れるか?
- サーバーについて理解しよう
- Webサーバーの処理について詳しく説明
- PHPプログラムの動作について説明
- パソコンにPHPの動作環境を構築しよう
- 一番簡単なPHPプログラムを書いてみよう
- ブラウザ画面にメッセージを表示しよう
- PHPタグの書き方と終了タグの省略
- 特殊なメッセージ(文字列)の書き方
- PHPプログラムで計算をしてみよう
- 変数
- 文字列の結合とヒアドキュメント
- ファイルの分割とファイルの読み込み
- [練習問題] ファイルの分割とファイルの読み込み
- 現在のページ:[解答と解説] ファイルの分割とファイルの読み込み
- コメント
- 定数
- 数値と文字列の性質・デバッグ
- 条件分岐 (if文)
- 論理型 (boolean型)
- 比較演算子
- 論理演算子
- 条件分岐 (switch文)
- 三項演算子
- 配列とforeach文
- 代入演算子 / 加算子 / 減算子
- ループ処理 (for文)
- ループ処理 (while文とdo-while文)
- break
- continue
- 連想配列
- 連想配列のループ処理