PHP,包含参数

PHP,包含参数,php,Php,我有一个PHP文件,它将从表单中调用。因此,它通过$获取参数 现在我需要与此文件完全相同的功能,但不是在这样的表单调用中。 我将把它包含在带有固定参数的普通代码中(通常来自表单)。 因此,我的文件可以使用表单,也可以不使用表单 我只知道包含和设置前面的$的方法。但我不确定这是最优雅的方式(我不喜欢设置$u GET这样的东西) 还有其他方法吗 br,chris您可以将代码转换为以关联数组为参数的函数 这样,您可以在必要时包含它,并使用$\u GET或您自己构建的数组调用该函数。您可以先执行if语句

我有一个PHP文件,它将从表单中调用。因此,它通过$获取参数

现在我需要与此文件完全相同的功能,但不是在这样的表单调用中。 我将把它包含在带有固定参数的普通代码中(通常来自表单)。 因此,我的文件可以使用表单,也可以不使用表单

我只知道包含和设置前面的$的方法。但我不确定这是最优雅的方式(我不喜欢设置$u GET这样的东西)

还有其他方法吗


br,chris

您可以将代码转换为以关联数组为参数的函数


这样,您可以在必要时包含它,并使用
$\u GET
或您自己构建的数组调用该函数。

您可以先执行
if
语句,查看是否已经设置了$\u GET参数。如果已经设置了,则将其分配给脚本可以使用的变量;如果尚未设置,则只需将固定参数分配给变量。

如果我理解正确,您可以创建一个包含默认值的数组。调用此脚本时,它将检查
$\u GET
是否为空。如果
$\u GET
为空,则使用默认值,否则,默认数组将被
$\u GET
覆盖并使用这些值

$def = array(
  'keyA' => 'valueA',
  'keyB' => 'valueB'
);

if ( !empty( $_GET ) ) $def = $_GET;

// $def contains either your defaults, or the user-provided values
需要注意的是,这个逻辑可以分为两个文件

/* index.php */
$def = array(
  'keyA' => 'valueA',
  'keyB' => 'valueB'
);

if ( !empty( $_GET ) ) $def = $_GET;
include( 'doStuff.php' );

/* doStuff.php */
if ( !isset( $def ) ) $def = $_GET;

echo $def['keyA'];

请注意,在
doStuff.php
中,我们检查是否设置了
$def
。如果此脚本包含在
index.php
中,则我们知道
$def
已设置,并且存在这些默认值。如果直接调用
doStuff.php
,那么我们知道
$def
很可能没有设置,我们需要根据
$\u GET
设置它。无论哪种方式,当脚本准备就绪时,我们将有一个名为
$def
的变量,从中我们将获得所有的值。

由于您应该在文件中执行某种参数清理,您可以像这样解析参数

$someConfigVar = isset($config['someConfigVar']) ? 
                       $config['someConfigVar'] : 
                       sanitize($_GET['someConfigVar'];

在这种情况下,您只需要在包含文件之前填充
$config
数组。此代码段期望
sanitize()
成为您的清理功能(防止xss和SQL注入等)

将对表单数据进行操作的代码放在一个单独的文件中

此文件将使用上下文数组变量$params,而不是$\u GET

然后,无论您需要在何处使用此文件的操作,都应将其包含在以下函数中

如果要使用web参数,请执行includeElement('your_file',$\u GET)

  /**
     * Allow a file inclusion with a set of parameters
     * @param string $src File 
     * @param array $params $parameters
     */
    function includeElement($src, $params = array())
    {
            include($src);
    }

这就是我要建议的。创建一个接受参数的函数。处理表单时,请使用GET vars作为函数调用的参数,否则,请将参数设置为所需的任何参数。