PHPベース007:PHP requireとrequire_onceの実験と総括
1646 ワード
t2.phpソース:
inc/t2_inc1.phpソース:
inc/t2_inc2.phpソース:
inc/t2_inc3.phpソース:
この例では、requireが同じファイルを複数回知っています.ファイルに関数定義が含まれている場合、メソッドの繰り返し定義のエラーが発生します.require_once呼び出しは何度も関係ありません.
また、関数定義のあるファイルがrequireに一度渡された場合は、require_を使用します.onceでも定義を繰り返すエラーが発生します.
関数定義のないファイルは複数回含まれていてもエラーは発生しません.
<?php
require 'inc/t2_inc1.php';
//require 'inc/t2_inc1.php'; //require , ,
require 'inc/t2_inc3.php';
require 'inc/t2_inc3.php'; // ,require , $ccc=0; t2_inc3.php t2_inc1.php ,
echo( "---------------------------<br />" );
require_once 'inc/t2_inc2.php';
require_once 'inc/t2_inc2.php';
echo( "in t2.php:::bbb=$bbb<br />" );
echo( "in t2.php:::bbb=$bbb<br />" );
echo( "in t2.php:::ccc=$ccc<br />" );
?>
inc/t2_inc1.phpソース:
<?php
$ccc = 0;
//require_once 't2_inc2.php'; // , require
$aaa = 0;
function addAaa() {
global $aaa;
$aaa++;
}
addAaa();
echo( "in t2_inc1.php:::aaa=$aaa<br />" );
//require_once 't2_inc2.php'; // , require
?>
inc/t2_inc2.phpソース:
<?php
$bbb = 0;
function addBbb() {
global $bbb;
$bbb++;
}
addBbb();
echo( "in t2_inc2.php:::bbb=$bbb<br />" );
?>
inc/t2_inc3.phpソース:
<?php
$ccc++;
?>
この例では、requireが同じファイルを複数回知っています.ファイルに関数定義が含まれている場合、メソッドの繰り返し定義のエラーが発生します.require_once呼び出しは何度も関係ありません.
また、関数定義のあるファイルがrequireに一度渡された場合は、require_を使用します.onceでも定義を繰り返すエラーが発生します.
関数定義のないファイルは複数回含まれていてもエラーは発生しません.