[PHP-users 5138] Re: diff include require

Hiroshi Morita php-users@php.gr.jp
Thu, 31 Jan 2002 16:35:14 +0900


tyuu です。

大垣様 write:
> 現在のPHPでは*_once()も含めてあまり変わりはありません。

値を返す (include) のと返さない (require) の違いがあるのは、
マニュアル中に見つける事ができました。
他には、何が違うのだろう?
書いてない...。英語の方にはあるのかしら?


> だとすると、マニュアルが間違っています。

私が調べたのは下記のマニュアルです(適当に改行を入れています)。
http://www.php.net/manual/ja/function.require.php
> 同様に、ループ構造はrequire()の動作には影響 しません。
> 読み込まれるファイル内のコードがループに依存している場合でも
> require()は読み込みを一回しか行いません。
>
> これは、ループ構造の中にrequire文を置き、 
> 各ループ毎に別のファイルの内容を読み込むことができないことを意味します。
> これを行うには、include文を使用して下さい。

このマニュアルどおりだとすると
下記のコードで配列内で指定しているファイルを読み込ませたければ
include を使えということだと思うのですが、
require でも hoge.php と foo.php を読み込みます。
# 昔はこんな動きしませんでしたよね?
# 思い違いか?

$a = array( './hoge.php', './foo.php' );
for( $i=0; $i<count($a); ++$i){
	require( $a[$i] );
}
for( $i=0; $i<count($a); ++$i){
	include( $a[$i] );
}


by tyuu.