おぼえがき

過ちては則ち改むるにうんぬんかんぬん

include文やrequire文を使った外部ファイルの読み込みついて(PHP)

f:id:feci:20210727001932j:plain

PHP7

 

PHP7.4.1におけるinclude文やrequire文を使った外部ファイルの読み込みについて

今回は「①読み込まれるファイル」と「②①を読み込むファイル」の2つのファイルを使います。

 

①読み込まれるファイル(include.php

<?php

function aaa($a1, $a2) { //引数を加算して返す関数
  $aa = $a1 + $a2;
  return $aa;
}

 

②①を読み込むファイル(sample.php

<?php
declare(strict_types=1);     //データ型チェックの厳密化

require('include.php');      //include.phpからaaa関数を読み込み
require_once 'include.php';  //パレンティス(丸括弧)ありでもなしでもOK

include_once('include.php'); //include.phpからaaa関数を読み込み
include_once 'include.php';  //パレンティスありでもなしでもOK

echo aaa(35);              //8

今回はinclude.phpの中にあるaaa関数をsample.phpで使ってみよう、という趣旨でやっていきます。

 

外部ファイルの読み込みには requireinclude を使います。

sample.phpにrequire文かinclude文を使ってinclude.phpを読み込むことで、sample.phpでaaa関数を実行して返り値を得ることができます。

 

 

require文およびinclude文による外部ファイル読み込みの定形は以下のとおりです。

 

require '読み込みたいPHPファイル名';
require('読み込みたいPHPファイル名');

 

include '読み込みたいPHPファイル名';
include('読み込みたいPHPファイル名');

 

require_once '読み込みたいPHPファイル名';
require_once('読み込みたいPHPファイル名');

 

include_once '読み込みたいPHPファイル名';
include_once('読み込みたいPHPファイル名');

 

 

requireとincludeともに、パレンティス(丸括弧)はあってもなくてもどっちでもいいです。

_onceがあるかどうかの違いは、_onceがあれば指定したファイル名がすでに読み込んでいる同一ファイルだった場合はその処理をスルーするという処理になることです。

 

例えば上記のsample.phpでは、include.phpを4回も読み込んでいます。

これは、もし2つ目以降の読み込みに_onceがついてなかったら、問答無用でFatal Errorが出てスクリプトが強制終了します。

 

PHPでは同じファイルを重複して読み込んだ場合、Fatal Errorが出るようになっています。

_onceを付けているとこのような意図せぬ重複に適切に対応することができるので、とても便利です。

 

 

require文とinclude文の違いについて。

 

require文とinclude文は、外部ファイルを読み込むという処理についてはまったく同じです。

両者の違いは、指定したPHPが存在しなかった場合に現れます。

 

require文の場合は、指定したファイルが存在しなければ、Worningを吐いた直後にFatal Errorを出してスクリプトを強制終了してきます。

しかしinclude文の場合は、指定したファイルが存在しなければ、Worningを吐いたあとにそのまま下行のスクリプトの処理を継続してくれます。

 

 

以上です。