🐡
PHP勉強:includeとrequireの違い
php オフィシャルドキュメント:
動作環境
php 7.4.22
挙動はほぼ同じ。違うのはエラー。
includeとrequire、どちらとも下記のように外部のファイルを呼び出すためのもの。
<?php
include 'file.php';
<?php
require 'file.php';
違いはファイルが見つからなかった時のエラーの種類と挙動。
include()はWarningになる。
E_WARNINGはエラー時に下記のような文章を表示する。:
<?php
include 'nofile.php';
結果:
Warning: include(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 8
Warning: include(): Failed opening 'nofile.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 8
warningはエラーが発生してもプログラムを実行し続けるため、下記のようにinclude
の後に書かれたecho 'hello';
は実行され、表示される。:
<?php
include 'nofile.php';
echo 'hello';
結果:
Warning: include(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 8
Warning: include(): Failed opening 'nofile.php' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 8
hello
require()はFatalになる。
include()と同じように存在しないファイルをrequireしてみる。:
<?php
require 'nofile.php';
結果:
Warning: require(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 11
Fatal error: require(): Failed opening required 'nofile.php' (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 11
Fatalエラーのため実行が中断され、require()
から先に書かれたコードは実行されない。
<?php
require 'nofile.php';
echo 'hello';
結果:
Warning: require(nofile.php): failed to open stream: No such file or directory in /var/www/html/index.php on line 11
Fatal error: require(): Failed opening required 'nofile.php' (include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 11
Discussion