[PHP-users 11495] Re: include_onceについて

WADA Masashi php-users@php.gr.jp
Thu, 14 Nov 2002 14:47:20 +0900


 和田です。

S.Okazaki wrote:
>では具体的にどう言った場合に、同じファイルを2度読み込むような事が
>あるのでしょうか?
>もしそう言う場面に出くわせば、include_once()の必要性がもっと理解できる
>と思うのですが…

 皆さんが指摘されているように、ライブラリの依存関係で問題を回避
するため include_once がよく利用されます。
 これ以外にも、次のスクリプトのように include するファイルが動
的に変化する状況でも include_once は有用ですね。

    $arr = array(
        1 => array("file" => "a.php", "class" => "ClassA"),
        2 => array("file" => "b.php", "class" => "ClassB"),
        3 => array("file" => "c.php", "class" => "ClassC"),
        4 => array("file" => "a.php", "class" => "ClassA"),
        5 => array("file" => "c.php", "class" => "ClassC")
    );
    // ... $arr は動的に変化する
    $objarr = array();
    foreach($arr as $key => $value) {
        include_once($value["file"]);
        eval("\$obj = new ${value['class']}();");
        $objarr[] = $obj;
    }

 もちろん、利用する可能性があるすべてのファイルをあらかじめ
include しておく方法もありますが、スクリプトのパースにかかる負荷
を考慮し、必要なファイルだけ逐次 include するわけです。

----
和田雅志 (WADA Masashi)
wada@hh.iij4u.or.jp