2

ファイル a.html

    <div id=1>
       <?php Include "a.php?parameter=1" ?>
    </div>

    <div id=2>
       <?php Include "a.php?parameter=2" ?>
    </div>

ファイル a.php:

    <? Php
    b;
    Function b {}
    ?>

a.html を呼び出すと、div 2 で "cannot redeclare " というエラーが発生しますb()。理由は簡単に理解できますが、最も効率的な回避策は何ですか?

4

3 に答える 3

3

別の PHP ファイルをインクルードしても、新しい HTTP リクエストは発生しません。そのようなインクルードファイルにパラメーターを渡すことはできません。引用符内のテキストは、パーツを含むディスク上のファイルに解決される必要があります?parameter=1

インクルードされたファイルにパラメーターを渡したい場合は、インクルードされたコードで現在のスコープを使用できることに注意してください。グローバル/ローカル変数に値を割り当てて、インクルード ファイル内で使用できます。

// run.php

<?php
    $name = 'Bob';
    include 'inc.php';
?>

// inc.php

<?php
    echo "Hi, $name!\n";
?>

アップデート

を使用する場合でも、同じ関数を複数回宣言することはできませんinclude。代わりに、関数を宣言するファイルをページの上部に 1 回含めます。require_once一度だけ発生し、ファイルが見つからない場合に中断するようにするために使用します。次に、関数の効果が必要な場所で、別のインクルードを行わずにページのスクリプトで呼び出します。

// run.php

<?php require_once 'sayhi.php'; ?>

<div id="1">
    <?php sayhi('Bob'); ?>
</div>
<div id="2">
    <?php sayhi('Frank'); ?>
</div>

// sayhi.php

<?php
    function sayhi($name) {
        echo "Hi, $name!\n";
    }
?>

これにより、目的の出力が作成されます。

<div id="1">
    Hi, Bob!
</div>
<div id="2">
    Hi, Frank!
</div>
于 2012-07-09T05:50:56.857 に答える
1

パラメータをファイルに割り当てたい場合、ファイルを 2 回含める代わりに、次の 2 つのことを行うことができます。

1)パラメータなしでインクルードし、アクションを実行する引数を使用して関数を呼び出します2)どこにも含めないでください。代わりに、execまたはpopenを使用していつでも実行し、argvとして受け入れるパラメータを渡します:)

于 2012-07-09T05:56:12.000 に答える
1

ファイルがインクルードされると、そこに含まれるコードは、インクルードが発生した行の変数スコープを継承します。呼び出しファイルのその行で使用可能な変数は、その時点以降、呼び出されたファイル内で使用できます。ただし、インクルード ファイルで定義されているすべての関数とクラスには、グローバル スコープがあります。

include()関数に関する情報を参照してください。関数 b() は既に存在するため、再宣言する必要はありません。関数に設定/渡される変数を変更しようとしている場合は、対応する変数を利用する関数のパラメーターを含めます。

于 2012-07-09T05:40:37.853 に答える