在PHP中,将$_REQUEST
转换为对象以更轻松地管理它是错误的吗?
$request = (object) $_REQUEST;
if(isset($request->submit) && isset($request->text) && !empty($request->text))
{
// Do stuff
}
编辑:我的意思是任何意外的副作用?
答案 0 :(得分:3)
我会说这没有什么不妥,除了显然你会得到更少的时间。我会做的是通过清理函数运行$ _REQUEST数组来验证和清理变量。这样你就可以随时知道如果你使用$ _REQEUST的对象版本可以安全使用它。
<强>更新强>
我会说这可能是现代Web应用程序世界中的最佳实践。我的意思是看看你使用的MVC框架(Zend,CodeIgniter,CakePHP等),它们都清理$ _REQUEST,$ _GET,$ _POST,$ _SERVER等,并将它们转换为对象。
请记住,像这样的事情的开销会非常小,你甚至都不会注意到它。 PHP解析和输出页面的时间非常短,通常小于一个图像的DOM请求。
答案 1 :(得分:2)
我无法看到 错误 。
它只允许您作为对象访问关联数组。
答案 2 :(得分:2)
不要争论,但我不知道如何更容易管理$_REQUEST
变量。您可以像这样编写相同的代码行:
if(isset($_REQUEST['submit']) && isset($_REQUEST['text']) && !empty($_REQUEST['text']))
{
// Do stuff
}
此外,数组键可能存在一些问题,这些问题无法正确转换为对象属性名称。以$_REQUEST['var name']
为例。完全合法的数组名称,但将数组转换为对象,你会对结果感到非常失望。
但是,如果您非常信任您的用户并希望花费额外的时钟周期来创建新对象,那么您可以随时强行使用它。
$request = new stdclass;
foreach($_REQUEST as $field => $value){
$request->$field = $value;
}