PHPベース007:PHP requireとrequire_onceの実験と総括

1646 ワード

t2.phpソース:
<?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でも定義を繰り返すエラーが発生します.
関数定義のないファイルは複数回含まれていてもエラーは発生しません.