0

重複の可能性:
require_onceとincludeをいつ使用する必要がありますか?

たとえば、私が持っている場合:

header part(header.php)
footer part(footer.php)
list of functions (functions.php)
list of constants (constants.php)
connect to database part(connection.php)
footer part + close the connection part(footer.php)

これらの例では、を使用する必要がありますかincluderequireまたはrequire_onceその理由に注意してください。

4

2 に答える 2

8

関数、クラス、およびその他のユーティリティを含むファイルの場合、通常require_once、複数のライブラリ(または何か)で誤って再宣言されたり、破損したりしないようにする必要があります。

  • functions.php
  • constants.php
  • connection.php

テンプレートであるファイルの場合、require問題を引き起こすことなく複数回含めることができるはずなので、通常は必要です。(これら2つのファイルの特定のケースではそうではありません。)

  • header.php
  • footer.php

決して*使用したくないinclude(またはinclude_once)。に似requireていますが、ファイルが存在しない場合にのみ警告が表示されます。おそらく意図したものではありません。

これで、フッターがデータベース接続を閉じることに気づきました。通常、テンプレートファイルの副作用を回避する必要があります。さらに、データベース接続を閉じる必要はおそらくありません。(そして、それを閉じることができるので、ここにいくつかのアドバイスがあります:代わりにPDOを使用してください!)

于 2012-07-30T01:13:06.790 に答える
1

特にファイルを複数回含める必要がない限り(たとえば、ページの複数の場所にある何かのテンプレートなど)、私は常にを使用しますrequire_once。テンプレートの場合でも、そのテンプレートを複数のインスタンス化を持つことができるクラスにする方が良いパターンであるため、そのファイルは1回だけ含まれます。例えば:

class TemplateExample() {
    function display() {
        echo "I'm a template!";
    }
}

$template = new TemplateExample();
$template->display();
echo "Some text between the templates.";
$template->display();

また、使用しない、またはとよりも遅いために使用しrequire_onceないと言っている情報源がいくつかあることにも注意してください。遅いのは事実ですが、目立ちません。スクリプトの速度が1ミリ秒遅くなるまでには、10,000インクルード程度の時間がかかります。この差は非常に小さいので、速度について心配する必要はありません。include_oncerequireinclude

于 2012-07-30T03:01:13.907 に答える