include、include_onceを使い別ファイルを読み込もう!~PHP入門~

せき
書いた人 せき


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

1つのPHPファイルに処理をどんどん書いていくと見づらくなったり処理が複雑になったり・・・という経験はありませんか?

コードのみやすさ(可読性)も落ちるし、不具合のもとになる場合もあるし開発効率が悪くなっちゃいますよね?

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

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

今回はinclude(include_once)を使うことでそういった問題を解決し、複数のファイルに処理を分けて書くことができるようになります!

この記事では、

・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歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

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


自分にプログラミングなんて・・・と思っていませんか?

今後10年間で今ある職業の『77%』はなくなると言われています。

人工知能や機械学習を筆頭にVR、AR、ドローンなどの最先端技術の発達はこれからのあなたの働き方に間違いなく影響を与えるでしょう。

将来を見据えてプログラミングができるようになってエンジニアになりたい、自分だけにしかできないクリエイティブな仕事がしたい、、、とお考えの方も少なくないでしょう。

と、同時に「難しそう、、自分にはできないだろう、、、」と諦めている方も多いのではないでしょうか。

弊社マンツーマンレッスンは、お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、オリジナルアプリ開発や、フリーランスとしての仕事獲得まで支援しています。

まずは『無料体験レッスン』で弊社コンサルタントと一緒にあなた専用の学習カリキュラムを考えてみてはいかがでしょうか?

詳しくは下の画像をクリックしてください。

cta_mtm2

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

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

最新情報をお届けします

書いた人

せき

せき

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