PHP 最佳实践 - 多次读取 GET/POST 参数或创建变量

PHP Best Practice - Read GET/POST parameter multiple times or create variable

我想知道在这种情况下实际上最佳做法是什么。您会使用以下哪些代码片段?

doStuff($_GET["param"]);
doMoreStuff($_GET["param"]);

$variable = $_GET["param"];

doStuff($variable);
doMoreStuff($variable);

在性能方面有什么不同,甚至在好的 PHP 代码应该是什么样子方面有什么不同吗?

如果第一个更好,您建议在多少函数调用时使用一个变量?

您应该在全局变量 $_GET 中过滤参数。因此,最佳做法是将 $_GET 中过滤后的数据存储在变量中,并在代码的其他部分使用它。过滤是一种很好的方法,因为它使您的代码更安全。

在那里您可以阅读有关过滤输入的信息:http://php.net/manual/en/function.filter-input.php

如果未设置 $_GET["param"],您的代码将生成警告。

我会先验证$_GET['param']是否真的存在,然后再做任何你想做的事情。

if(!isset($_GET['param'])){
    //fail here with exit() or exception, or whatever
}

//your code here, now you know for sure that $_GET['param'] is present
doStuff($_GET['param']); //or whatever you like

你还应该相应地进一步验证你的参数,如果它的整数检查 is_numeric(),最好在 (int) 之后进行转换。 empty() 也是你的朋友,但请注意,如果 $_GET['param']="0" empty() 将 return 为真。

验证完成后,您可以选择任何一种方式,都可以。最终这将取决于您所处的情况。

两者几乎相同;

$variable = $_GET["param"];

将清理您的样式,如果您在不同页面中使用相同的变量,将会更有用。

其实$_GET数组也是一个变量。因此,多次使用 $_GET 应该不是问题。当您为 GET 数据创建一个单独的变量时,您的脚本将需要更多内存。

当您多次执行相同的操作时(例如从用户输入中过滤某些内容),最好为此创建一个变量并且不要操作 $_GET 或 $_POST 数组。在我看来,如果您期望 $_GET 数组中的直接用户输入会令人困惑,但它包含 filtered/manipulated 数据。