【PHP入門】外部ファイルを読み込む方法 | include・include_once

image (1)
せき
書いた人 せき
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーエンジニアのせきです。

PHPでは共通化できる処理を別のファイルに分解して、外部ファイルとして読み込むことができます。

たとえば、共通化したい内容を外部ファイルに記述することで、同じ処理を何度も記述する手間を省くことも可能です。

この記事では、

・includeの基本的な使い方
・htmlファイルを読み込む方法
・変数や関数を共有する方法
・外部ファイルをループで読み込む方法
・外部ファイルを文字列として読み込む方法
・Warningメッセージを出力する
・include_onceの使い方

という基本的な内容から、

・includeとrequreの違いが知りたい

といった応用的な内容に関しても解説していきます。

今回はそんなinclude文で外部ファイルを読み込む方法について、わかりやすく解説します!

includeとは

外部ファイルを読み込むには、include文を使用します。

外部ファイルは主に共通で記述することが多いHTMLのヘッダー情報などを、1つのファイルに記述しておけば何度でも再利用が可能となります。

include文は指定されたファイルを読み込み、そのファイルに書いてある処理を実行します。

include文は以下のように記述します。

includeの書き方1(括弧なし):

includeの書き方2(括弧あり):

外部ファイルの指定方法:
外部ファイル名はシングルクォーテーションのほか、ダブルクォーテーションや括弧で囲むこともできます。

外部ファイルが別のディレクトリにある場合は、元のファイルからの相対パスまたはサーバ上の絶対パスで指定します。

返り値:
include文を実行したときに、読み込んだファイル側でreturnで戻り値を返さなかった場合、1が返されます。
指定したファイルが存在しない場合はFALSEを返し、Warningのエラーを出力します。

includeの使い方

ここでは実際にinclude文の使い方を見ていきましょう。

基本的な使い方

以下の例では、include1.php から include2.php を読み込みます。

include1.php

include2.php

実行結果:

include1.php を実行すると、include1.php の「include ‘include2.php’;」で、
include2.php の処理が実行されているのがわかります。

ここではinclude2.phpでecho ‘include2’が実行されています。

また、includeの引数は以下のように絶対パスで指定することもできます。

返り値を取得する方法

include文は前述したように読み込んだファイルでreturnで値を返さなかった場合は1を、ファイルが存在しないなど読み込みが失敗した場合はFALSEを返します。

そのため、include文の返り値を元に以下のように条件文で使用することもできます。

実行結果:

htmlファイルを読み込む方法

include文はテキストファイルやHTMLファイルといった、PHPファイル以外の外部ファイルも読み込むことができます。

include1.php

include.html

include1.php の実行結果:

変数や関数を共有する

外部ファイルを使用して、変数や関数を共有することができます。

include1.php

include2.php

include1.phpの実行結果:

この例では、include1.phpで宣言した変数$valをinclude2.phpで表示しています。

外部ファイルをループで読み込む

以下のようにfor文の繰り返し処理で複数のファイルを読み込むことも可能です。

include1.php

test1~3.php

include1.phpの実行結果:

外部ファイルを文字列として読み込む

出力バッファリングを使用して、includeで読み込んだPHPファイルを文字列として取得することもできます。

出力バッファを有効にするには、外部ファイルを読み込む前にob_start()を指定し、読み込んだあとはob_get_clean()でバッファの内容を取得後に削除します。

include1.php

include2.php

実行結果:

Warningメッセージを出力する

include文では外部ファイルが存在しなかった場合にWarningのメッセージを出力することができます。

ブラウザにエラーを出力するにはini_set関数に’display_errors’を指定します。

第二引数は(0:出力しない、1:出力する)となります。

実行結果:

include_onceの使い方

include_once文は、include文と同じく外部ファイルを読み込むときに使用しますが、違いとして外部ファイルがすでに読み込まれているか、チェックを行います

すでに外部ファイルが読み込まれている場合は、ファイルを読み込むことはありません。

そのため、同じファイルを誤って複数回読み込みんだり、意図しない関数の再定義や値の初期化を防ぎたい場合に使用します。

include1.php

include2.php

include1.phpの実行結果:

requireとincludeの違い

require文とinclude文は、読み込むファイルが存在しなかった時の動きが異なります。

include文では警告が発生します。

ログファイルには、以下の警告が出力されます。

警告が発生した後も処理は続行され、include後の処理が実行されています。

require文ではエラーが発生します。

ログファイルには、以下のエラーが出力されます。

エラーが発生すると処理は中断され、require後の処理は実行されていません。

その後の処理に影響し、確実に読み込む必要がある場合はrequire文を、そうでない場合はinclude文を使うという使い分けができます。

require文については、以下の記事で詳しく解説しています!

速度面での比較

include文とrequire文に、速度面での違いはあるのでしょうか?

includeとrequireで、それぞれ1万回ループして外部ファイルの読み込みを行い、速度を秒単位で計測してみました。

include文の方が、処理速度が早いことがわかりました!

これは、require文が読み込むファイルが存在しなかった場合のエラーチェックをしているためと考えられます。

まとめ

今回は、外部ファイルを読み込む方法について、

  • includeの基本的な使い方
  • htmlファイルを読み込む方法
  • 変数や関数を共有する
  • 外部ファイルをループで読み込む
  • 外部ファイルを文字列として読み込む
  • Warningメッセージを出力する
  • include_onceの使い方
  • includeとrequreの違いが知りたい

などを解説しました。

大きなプログラムを書く時、この方法を知っていると処理を複数のファイルに分けて書くことができるので便利です。

外部ファイルを読み込む方法について忘れてしまったら、この記事を思い出して下さい!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

学習者インタビュー

人気講師インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

せき

せき

フリーランスでWebシステム開発やゲーム開発をしています。
読者の方にプログラミングの面白さをお伝えしたいです。