PHP Input::get() 和 $_GET[] 的区别

PHP Difference between Input::get() and $_GET[]

有什么区别
Input::get('value') 

还有这个:

$_GET['value']

什么时候使用其中之一更好?

第一行代码

input::get('value')

是一些框架(可能Laravel 4.2) wrapper around PHP GET variables像第二行代码

$_GET['value']

这是一个 PHP superglobal,包含相同的数据,但是是普通的 PHP。

所以区别或多或少是语法上的,例如你如何前缀,写名字和括号:

Prefix    Name             Parenthesis

-none-    "input::get"        ()
 "$"      "_GET"              []

除了语法差异之外,第一个是函数调用,而另一个是读取变量。

函数调用允许更多交互,例如该框架可以注入代码以在 "read" 操作(returning/getting 值)中提供额外的功能,例如允许在未设置输入时指定默认值,而普通的 PHP 没有过去支持得不好(我认为 PHP 7 中会有改进,但现在找不到 RFC)。

并不是说 PHP 不能处理不存在的 GET 变量条目的默认值,这只是一些小样板:

$value = isset($_GET['value']) ? $_GET['value'] : null;

显然,Input::get() 来自 Laravel,就像@hakre 所说的那样。

$_GET['value'] 将解析 URL 如果其中有设置值。

例如我们有一个urlhttp://www.example.com/index.php?myget=value

我们可以使用 $_GET['myget'] 来获取它的值,如下所示:

echo $_GET['myget'];
// this will print "value"

Input::get() 是 Laravel

的函数
$email = Input::get('email');

Note: The "get" method is used for all request types (GET, POST, PUT, and DELETE), not just GET requests.

从输入数组中检索所有输入:

$array = Input::get();

检索所有输入,包括 $_FILES 数组:

$input = Input::all();

And $_GET is superglobal variable in PHP used to get parameters from querystring .

$_GET 是 PHP 内置变量。

它是全局静态变量,有几个缺点,尤其是对于测试。 Laravel 引入了 Input::get(),因此您可以轻松交换实现。

在 Laravel 中没有理由使用 $_GET 并尽可能使用 Input::get()。