1ページに2つのインクルードがあります。それらがヘッダーとフッターであるとしましょう:
<?php
include('header.php');
include('footer.php');
ヘッダーのフッターから変数を使用する必要があります。これは可能ですか?
1ページに2つのインクルードがあります。それらがヘッダーとフッターであるとしましょう:
<?php
include('header.php');
include('footer.php');
ヘッダーのフッターから変数を使用する必要があります。これは可能ですか?
別のインクルードを作成するか、変数のロジックをメインスクリプトに配置します。
できない理由がない限り、簡単な解決策は、代わりにinc2で使用される変数をinc1に設定することです。
スクリプトが関数の外部に含まれている場合、スクリプトはグローバルスコープで実行されるため、スコープが設定または定義されているものはすべてグローバルスコープになります。スクリプトがローカルスコープ(関数など)に含まれている場合、スクリプトは同じスコープで実行されるため、スクリプトが定義するものはすべてローカルです。含まれているスクリプトは、関数のローカル変数にアクセスできることに注意してください。
function foo($x) {
$bar = 'bam';
include 'script.php'; # script.php can access $x and $bar
}
ただし、グローバル変数には問題がある可能性があります。より良いアプローチは、タスクを別々のモジュールに分割することです。ほとんどのモジュールはライブラリスクリプトです。モジュールは物事(関数、クラス)を定義するだけで、直接何も実行しません。エントリポイント(トップレベルのスクリプト)は何も定義しません。代わりに、すべてを接続し、計算の開始点として機能します。データベース接続の簡単な例を次に示します。
<?php
include_once('DB.php');
include_once('header.php');
include_once('footer.php');
$db = DB::connect();
header($db);
footer($db);
技術的$db
にはグローバル変数ですが(これは本番コードではなく単なるサンプルコードであることに注意してください)、このスクリプト以外の場所からアクセスすることはできません。代わりに、機能のルールに従って渡されます(これはセキュリティ目的で設計されていますが、ルールは実際には単なる優れたOOP原則です)。