我想知道在这种情况下,最佳实践实际上是什么。您将使用以下哪一个代码片段?
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
两者实际上是相同的;
$variable = $_GET["param"];
将清理您的样式,如果您在不同页面中使用相同的变量,则会更有用。
如果未设置 $_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()
会返回真。
验证完成后,您可以选择任何一种方法,两者都很好。最终,这将取决于您所处的情况。
实际上,$_GET 数组也是一个变量。因此,多次使用 $_GET 应该不是问题。当您为 GET 数据创建单独的变量时,您的脚本将需要更多的内存。
当您多次执行相同的操作时(例如,从用户的输入中过滤某些内容),最佳做法是为此创建一个变量,并且不要操作 $_GET 或 $_POST 数组。在我看来,如果您希望在 $_GET 数组中直接输入用户,但它包含过滤/操作的数据,这是令人困惑的。