簡単に言えば:
<? include("open.php"); ?>
VS
<? include("open.php?page=about"); ?>
VS
<? $x="varToPass"; include("open.php"); ?>
なぜこれができないのか、確かにこれはプログラムされているはずです。そうでない場合は、これを実現するためにraw / corePHPCファイルを編集できます。
簡単に言えば:
<? include("open.php"); ?>
VS
<? include("open.php?page=about"); ?>
VS
<? $x="varToPass"; include("open.php"); ?>
なぜこれができないのか、確かにこれはプログラムされているはずです。そうでない場合は、これを実現するためにraw / corePHPCファイルを編集できます。
簡単な答え。このようなパラメータを渡す必要はありません。
include 'open.php?page=about&something=true&more=rubbish';
対
$page = 'about';
$something = true;
$more = 'rubbish';
include 'open.php';
どちらが読みやすいかを確認するのは非常に簡単だと思います。どちらも、あなたがやろうとしていることを正確に達成します。
実際のところ、include
ステートメントには、参照した時点で示されたファイルのコードが文字通り含まれています。
open.php
インクルードを実行しているファイルは、インクルードステートメントを記述した正確な場所にソースがあるものとして扱うことができます。
編集:
あなたの質問の2番目の部分に答えるため。はい、ソースを変更してこれを達成することはできますが、それはほとんど無意味な演習になります。
編集2:
また、URLでファイルを含めたいと思うかもしれません。
例えばinclude 'http://127.0.0.1/open.php?page=about'
この場合、http
ストリームラッパーが呼び出され、変数が要求したファイルに渡されるため、完全に可能です。
この動作は、重大なセキュリティリスクをもたらすため、デフォルトでは無効になっています。
allow_url_include
の値を編集することでオンにできますphp.ini
。しかし、私はあなたがそうしないことを提案します。
ファイルを含めると、それらは同じスコープに含まれるため、変数を再利用したり、パラメーターを取得したりできます。
<?php
// index file
$x = $_GET["x"];
include 'file.php';
そして、file.phpでは、次のいずれかを実行できます。
<?php
//include file
if ($x != '')
また:
<?php
//include file
$x = $_GET["x"];
だから、物事を回す必要はありません-
含める/要求するのは物理ファイル用であり、着信パラメーターに基づくファイルの動的表現ではありません。
後者の場合、 cURLを調べる必要があります。