简单地说:
<? include("open.php"); ?>
VS
<? include("open.php?page=about"); ?>
VS
<? $x="varToPass"; include("open.php"); ?>
为什么不能这样做,当然这应该被编入。如果没有,我可以编辑原始/核心PHP C文件来实现这一目标。
答案 0 :(得分:2)
简单的答案。没有必要传递这样的参数。
include 'open.php?page=about&something=true&more=rubbish';
与
$page = 'about';
$something = true;
$more = 'rubbish';
include 'open.php';
我认为很容易看出哪个更易读,而且它们都能达到您想要做的目的。
事实是,include
语句字面包含指定文件中的代码,在您引用它时。
您可以将执行包含的文件视为在您编写包含语句的确切位置具有open.php
的源。
修改强>
回答问题的第二部分。是的,你可以修改源并实现这一点,但这将是一个毫无意义的练习。
编辑2:
我也想过,或许你认为你想通过URL包含文件。
例如include 'http://127.0.0.1/open.php?page=about'
在这种情况下,完全有可能,因为将调用http
流包装器,并且变量将被传递给您请求的文件。
此行为因默认而被禁用,因为它会带来巨大的安全风险。
您可以通过修改allow_url_include
中的php.ini
值来启用它。但我建议你不这样做。
答案 1 :(得分:1)
当您包含文件时,它们将位于相同的范围内,因此您可以重复使用变量或检索参数:
<?php
// index file
$x = $_GET["x"];
include 'file.php';
在 file.php 中你可以这样做:
<?php
//include file
if ($x != '')
或:
<?php
//include file
$x = $_GET["x"];
所以不需要传递任何东西 -
答案 2 :(得分:-1)
包含/要求是物理文件,而不是基于传入参数的文件的动态表示。
对于后者,您需要查看cURL。