PHP的Input::get()和$_GET[]有何不同?

3
什么是两者之间的区别?
Input::get('value') 

并且这个:

$_GET['value']

何时更好地使用它们中的一个?

取决于 input::get() 的来源 - 你使用的是哪个框架? - halfer
旁注:FuelPHP还有Input::get() - Kevin
1
@Ghost:我感觉所有与Codeigniter相关的框架都会倾向于使用这种命名的全局(静态类)函数。我在Laravel中发现了一个,它可能是这个PHP框架分支中最受欢迎的一个。 - hakre
@hakre 我同意,现在 Laravel 是最受欢迎的之一,但是它们基本上都做同样的事情。 - Kevin
@hakre Input::get() 是 Laravel 框架内的函数,这就是为什么我添加了它。 - Gaurav Dave
显示剩余3条评论
4个回答

12

代码的第一行

input::get('value')

这是一些框架(可能是Laravel 4.2)对PHP GET变量的封装,就像第二行代码一样。

$_GET['value']

这是一个PHP 超全局变量,包含相同的数据,但以纯粹的 PHP 形式存在。

因此,区别在于语法上更多一些,例如前缀、名称和括号的书写方式:

Prefix    Name             Parenthesis

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

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

函数调用允许更多的交互,例如框架可以注入代码以提供“读取”操作中的额外功能(返回/获取值),例如允许在未设置输入时指定默认值,而在过去普通的PHP不太支持这一点(我认为在PHP 7中会有所改善,但现在找不到RFC)。

并不是PHP无法处理不存在的GET变量条目的默认值,只是需要一些小小的样板文件:

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

1

显然,Input::get()与@hakre所说的一样,都来自于Laravel。

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

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

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

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

1
Input::get 是 Laravel 的一个函数。 - manix

1

Input::get() 是 Laravel 中的一个函数

$email = Input::get('email');

注意:对于所有请求类型(GET、POST、PUT和DELETE),都使用“get”方法,而不仅仅是GET请求。
从输入数组中检索所有输入:
$array = Input::get();

获取所有输入,包括 $_FILES 数组:

$input = Input::all();

在PHP中,$_GET是一个超全局变量,用于从查询字符串中获取参数。

1
如果你要引用内容,最好附上引用来源的链接。 - pala_
基本的区别是,你包含了引用,如果有人想要找到这些引用周围的更多信息,他们现在必须去尝试找到它们来自哪里。 - pala_
他正在询问“PHP中Input::get()和$_GET[]之间的区别”,所以请不要过于聪明,专心做好自己的工作。 - Aftab Muni
如果你曾经想过为什么你的答案是-1,而一个相似的答案是+6,请回到这些评论。 - pala_
没问题,为什么不回答呢? - Aftab Muni
@Aftab'WebDeveloper' 真的很有帮助,谢谢。 - Giorgi Khmaladze

1

$_GET是PHP内置变量。

它是全局静态变量,有几个不良特性,特别是在测试方面。 Laravel引入了Input::get(),因此您可以轻松地交换实现。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接