・共通の処理を分解して、それを外部ファイルとして読み込みたいけど、やり方がわからない・・・。
・requireとの違いは?
PHPのincludeは、外部ファイルを読み込むことができますが、正しい使い方やrequireとの違いを知らない人も多いでしょう。
そこでこの記事では、PHPのincludeの使い方やrequireとの違いについて詳しく解説します!
この記事を読めば、includeで正しく外部ファイルを読み込む方法やrequireとの違い、include_onceやrequire_onceとの使い分け方を理解することができるでしょう。
PHPで外部ファイルを読み込みたいけど、includeの使い方がわからない、requireとどうやって使い分ければいいかわからない人は、ぜひ最後までご覧ください。
目次
includeとは
includeとは、外部ファイルを読み込むことができるものです。
例えば、1つのファイルに処理をたくさん書いていると、処理が複雑になっていき、コードが見づらくなってしまいます。
そこでincludeを使えば、共通化できる処理を分解して、外部ファイルとして読み込むということができるのです。
includeを使うと、
- ・同じ処理を何度も書く必要がない
- ・修正がある場合は、1つのファイルを修正するだけで良い
- ・コードが見やすくなる
というようなメリットがあります。
では、そのincludeをどうやって使うのか、具体的な使い方を次の項目で見ていきましょう。
includeの使い方
共通化したファイルを外部ファイルとして読み込むことができるincludeですが、使い方がいまいちわからないという人もいるでしょう。
なのでここでは、includeの使い方について詳しく解説していきます。
includeの基本的な使い方
includeの基本的な使い方は次の通り。
1 |
include(‘外部ファイル名’) |
includeは()括弧の中にシングルクォーテーションまたはダブルクォーテーションで囲って、外部ファイル名を記述します。
ちなみに、()括弧を使わない書き方もあります。
1 |
include ‘外部ファイル名’ |
includeは、()括弧を使っても使わなくても、どちらでも外部ファイルを読み込むことができるので、使いやすい方を選ぶといいでしょう。
※この記事では、()括弧を使う方で解説していきます。
では、実際にコードに書いて、使い方を学んでいきましょう。
■index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!-- 外部ファイルとして読み込む --> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <header> <h1>Hello World</h1> </header> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
まず、上記のように「index.php」を用意します。
中身は簡単に、headerとdivを作り、見出しと文章を入れておきます。(任意で要素を増やしても構いません)
では、ここからファイルを分解していきましょう。
index.phpと同じディレクトリに「header.php」というファイルを作成します。
そして、index.php内で「外部ファイルとして読み込む」と書かれた範囲をコピーし、header.phpに貼り付けてください。
■header.php
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <header> <h1>Hello World</h1> </header> |
これで、ファイルの分解ができましたので、index.phpでheader.phpを読み込みましょう。
index.phpで「外部ファイルとして読み込む」と書かれた範囲に、PHPの処理を書いていきます。
■index.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- 外部ファイルとして読み込む --> <?php include('./header.php'); ?> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
PHPの処理は、includeに「./header.php」を指定するだけです。
これで、index.phpに外部ファイルのheader.phpを読み込むことができます。
結果を表示して、確認してみましょう。
index.phpファイルを表示すると、header.phpの部分もきちんと表示されていますね。
Chromeのデベロッパーツールで確認してみると、わかりやすいでしょう。
htmlタグの開始から、headerタグの終わりまで、しっかりコードとして読み込まれていますね。
このように、includeを使えば、分解した外部ファイルを簡単に読み込むことができます。
PHPファイルのコードが複雑なときや、共通化したい処理がある場合は、なるべくファイルを分解して、外部ファイルとして読み込むと、コードも見やすくなり、ファイルの管理がしやすくなります。
なので、使い方を覚えておくといいでしょう。
HTMLファイルを読み込むこともできる
先ほどの解説では、includeを使ってphpファイルを読み込みました。
ですが、htmlファイルでも読み込むことができます。
■index.html
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <h1>Hello World!</h1> </body> </html> |
例えば、上記のようなhtmlファイルがあったとします。
そして、同じディレクトリに「main.php」というphpファイルを作成します。
■main.php
1 2 3 |
<?php include('./index.html'); ?> |
main.phpのファイルには、includeで「./index.html」と指定してみます。
結果を表示すると、次のようになるでしょう。
main.phpにindex.htmlの内容が表示されていますね。
これによって、includeはhtmlファイルも読み込むことができるということがわかりました。
includeは、様々なファイルを読み込むことができる、便利なものであると言えますね。
requireとの違い
ここまで、includeの使い方について解説しました。
そこで、中には「同じ働きを持つrequireとは、どういった違いがあるのだろう・・・。」と疑問に思った人もいるでしょう。
実は、PHPでは外部ファイルを読み込むものでincludeの他に「require」というものがあります。
requireも働きとしては同じで、分解したファイルを外部ファイルとして読み込むことができます。
では、includeとはどういった違いがあるのか。
結論から言うと、存在しないファイルを読み込んだ際の動作に違いがあります。
■存在しないファイルを読み込んだ際のincludeとrequireの動作の違い
- ・include:includeの処理部分は停止されるが、その後の処理は実行される
- ・require:その場でエラーになり、その後の処理も停止される
存在しないファイルを読み込もうとした際、includeの場合は読み込みの処理が停止されるものの、その後の処理は実行されてしまいます。
一方で、requireの場合はファイルの読み込み処理が停止されて、その後の処理もすべて停止されます。
実際のコードで書いて、動作を確認した方が理解しやすいと思うので、コードに書いていきましょう。
■includeを使った場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!-- 外部ファイルとして読み込む --> <?php ini_set('display_errors', 1); include('./test.php'); // ← 存在しないファイル echo 'Hello PHP'; ?> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
PHPのエラーメッセージを表示できるように、ini_set関数の第1引数に「display_errors」、第2引数に「1」と指定します。(第2引数に「0」を指定すると、エラー表示なしということになります)
そして、includeには存在しないファイル(test.php)を指定してみましょう。
ファイル読み込み後の動作を確認したいので、echoで文字列を出力し、表示されるのかどうか試してみます。
結果を表示すると、次のようになるでしょう。
上記のように、「ファイルが見つかりません」というエラーメッセージが表示されていますが、その後に「Hello PHP」という文字列が出力されていますね。
このことから、includeは存在しないファイルを読み込んだ場合、読み込み処理は警告が出て停止されますが、その後の処理はいつも通り行われていることがわかります。
では、requireを使った場合はどうなるのでしょうか?
■requireを使った場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!-- 外部ファイルとして読み込む --> <?php ini_set('display_errors', 1); require('./test.php'); // ← 存在しないファイル echo 'Hello PHP'; ?> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
先ほどと同じコードで、includeと書いてあった部分をrequireに書き換えます。
結果を表示してみると、次のようになります。
上記のように、エラーメッセージが表示されました。
そして、その後のechoの処理も停止され、「Hello PHP」という文字列は表示されていませんね。
このことから、requireは存在しないファイルを読み込んだ場合、読み込み処理はエラーによって停止され、その後の処理もすべて停止されることがわかります。
このように、外部ファイルを読み込むことができるincludeとrequireには、読み込む際の動作に違いがあるのです。
requireを使用した場合は、読み込みに失敗した時点で処理を停止してくれるので、ミスをしても気づきやすいと言えますね。
よって、確実に読み込む必要がある重要なファイルを読み込ませる場合は「require」、そうでない場合(通常のHTMLファイルやテキスト)は「include」というように使い分けるといいでしょう。
また、先ほど少し触れたPHPのエラー表示について詳しく知りたい人は、以下をご覧ください。
include_onceやrequire_onceとの使い分け
includeとrequireの使い方や違いがわかり、正しく外部ファイルを読み込めるようになりました。
ですが、このincludeとrequireには、それぞれ「include_once」や「require_once」といったものもあります。
では「_once」がついている場合とついていない場合には、どういった違いがあるのかと言うと、
include_onceやrequire_onceは、「同じファイルが読み込まれた場合、1度しか処理ができない」という働きがあります。
つまり、includeやrequireは同じファイルを複数回処理できるのに対し、include_onceやrequire_onceは同じファイルを1度しか処理できないということです。
実際のコードで、どのような結果になるのか見てみましょう。
■includeで同じファイルを読み込んだ場合
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!-- 外部ファイルとして読み込む --> <?php include('./header.php'); include('./header.php'); ?> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
上記のように、includeで「./header.php」のファイルを2回読み込んでみます。
すると、結果は次のようになるでしょう。
header.phpの部分が2度表示されているのがわかりますね。
Chromeのデベロッパーツールで確認してみてもheaderの部分が2つ存在します。
では、include_onceを使った場合はどうなるのでしょうか。
■include_onceで同じファイルを読み込んだ場合
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!-- 外部ファイルとして読み込む --> <?php include_once('./header.php'); include_once('./header.php'); ?> <!-- ここまで(外部ファイルとして読み込む) --> <div> <p>これはサンプルページです。</p> </div> </body> </html> |
先ほどと同じように、「./header.php」のファイルを2回読み込んでみます。
そして、includeだったところを「include_once」に書き換えます。
すると、結果は次のようになるでしょう。
header.phpの部分が1つしか表示されていません。
Chromeのデベロッパーツールで確認してみても、同様の結果です。
よって、include_onceを使って同じファイルを読み込んでも、1度しか処理ができないということがわかりました。
ちなみに、requireとrequire_onceを使った場合も同じ結果になります。
なので、同じファイルを2度以上読み込ませたい場合は、includeやrequireを使った方が良いということですね。
このように、外部ファイルを読み込ませる場合によって、どれが最適なのか考えてから使うようにするといいでしょう。
まとめ
今回は、PHPのincludeの使い方やrequireとの違いについて解説しました。
PHPでは、共通化できる処理を分解して、それを外部ファイルとして読み込むためにincludeやrequireなどが使われます。
includeとrequireは、存在しないファイルを読み込む際の動作に違いがあるので、確実に読み込まなければならないファイルにはrequireを、そうでないファイルにはincludeを使うといいでしょう。
この記事がPHPの学習に役立つと幸いです。