$ _POST作为函数参数

时间:2011-07-02 18:04:28

标签: php

我一直在为一个游戏项目工作(所以你会明白我不能发布实际的脚本),而且我正在清理代码并将代码放入函数中,而不是仅仅在< / p>

if ($_POST['name'] { //code }

这是我正在尝试的正确方法吗? (我试过,但它打破了我的系统)

if ($_POST['action'] == "actionName") actionName($_POST); //calls function if the $_POST is present
function actionName($_POST) { //code }

提前感谢您的正确答案!

8 个答案:

答案 0 :(得分:7)

$ _ POST可全局访问。所以你不必传递给你的函数:

if ($_POST['action'] == 'actionName') actionName(); 

function actionName() {
    //code using $_POST
}

如果你希望你的函数能够用任何数组(即$ _POST除外)做它想做的事情,那么让函数接受一个参数,但不要调用它$ _POST:

if ($_POST['action'] == 'actionName') actionName($_POST); 

function actionName(parameters) {
    //code using parameters
}

答案 1 :(得分:0)

$_POSTsuper-global。所有PHP代码,无论范围如何,都可以自动访问此数据结构。

因此,以下情况很好:

if ($_POST['action'] == "actionName") {
  actionName();
}

然后

function actionName() {
  print_r($_POST);
  // code
}

答案 2 :(得分:0)

$_POST已经是一个超全局变量,因此您无需将其传递给函数。如果函数需要$_POST的内容,则复制并将其传递给函数。

但是,从您的示例中,我觉得您需要将$_POST['action']传递给您的函数而不是$_POST

答案 3 :(得分:0)

在您的示例中,您需要在字符串变量周围加上引号:

//calls function if the $_POST is present
if ($_POST['action'] == 'actionName') actionName($_POST); 
function actionName($_POST) { /*code*/ }

答案 4 :(得分:0)

虽然$_POST是超全球性的,但是你当然可以做到这一点,实际上是个好主意。这样您就可以解耦代码,也许可以在应用程序的其他部分重用actionName

但是,不要命名函数$_POST的参数(这比有用的更令人困惑)。

要避免对每个可能的操作发出大量if语句,请查看call_user_func [docs]

E.g。你可以这样做:

$allowed_actions = array_fill_keys(array('actionName', ...), true);

if(isset($allowed_actions[$_POST['action']])) {
    call_user_func($_POST['action'], $_POST);
}

答案 5 :(得分:0)

你应该在执行它的代码之前移动函数,以及这里的其他人对$ _POST数组的说法。如果你想要试试这个

function actionName($input) { // code and return }
if (isset($_POST['action'])) {
    $action = $_POST['action'];
    if ($action == 'actionName') {
        $name = actionName($action);
    }
}

答案 6 :(得分:0)

  • $ _ POST是一个超级全局(正如其他人所提到的那样),所以你没有需要来传递它。
  • 可以传递它,以便您将功能代码与其运行的环境分离。例如,如果您希望通过代码中的其他内容启动此类操作,则可以使用$ _POST必须执行的相同键/值传入数组
  • 如果您确实将$ _POST传递给函数,请将函数参数命名为其他内容,希望指出数据代表的内容
  • 考虑到函数可能不需要所有 $ _POST通常包含的键/值,如果你最好定义一个只接受它所需的参数的函数来运行< / LI>

答案 7 :(得分:0)

如果您正在谈论动态调用函数,您可以通过以下方式实现:

/*

Example Post

$_POST['functionName'] = 'doSomething';
$_POST['value'] = 'woot!';


*/

function doSomething($message) {
    echo $message;
}


// Call the function if it exists
if (function_exists($_POST['functionName']) {

    call_user_func($_POST['functionName'], $_POST['value']);    

}


// The above would output "Woot!"