我可以用die来填充变量吗?

时间:2012-07-15 02:24:39

标签: php

当我填充变量时,我可以这样做吗?:

$type = isset( $_GET['type'] ) ?  $_GET['type'] : die();

通过这样做,如果'type'不在请求中,我的函数将退出。这是使用die()的正确方法吗?

5 个答案:

答案 0 :(得分:3)

如果您只想退出功能,请使用return。但是,它不是表达式,因此您需要将其更改为if语句:

if(!isset($_GET['type'])) {
    return;
}

$type = $_GET['type'];

如果您确实希望整个页面停止执行,那么是的,这是正确的(但为了清晰起见,我仍然会使用if

答案 1 :(得分:1)

是和否。是的,因为你所做的事情在技术上是正确的,并且如果变量不存在则将终止脚本,但如果您想要测试代码,则不应该使用die构造。 PHP是一种面向对象的语言(从版本5开始),并且是一种非常强大的语言。它支持使用您可能希望在此处使用的高级错误处理的异常。

答案 2 :(得分:1)

您无法使用die()填充变量。 die()终止您的代码。相反,您可以考虑以下代码:

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

答案 3 :(得分:1)

Ternary Operator Docs说:

$type = isset( $_GET['type'] ) ?  $_GET['type'] : die();

与if / else语句相同:

if ( isset( $_GET['type'] ) )
    $type = $_GET['type'];
else 
    $type = die();

它的工作原理是因为die()将被调用并将停止脚本执行,但这不是一个好习惯。如果$ _GET ['type']不存在,那么你可以选择使用if和else语句,只需调用die(),如下所示。

if ( isset( $_GET['type'] ) )
    $type = $_GET['type'];
else 
    die('type not found');

答案 4 :(得分:0)

die()函数将结束整个PHP进程,而不仅仅是退出你所在的函数。除此之外,代码依赖于PHP有点傻的事实。 die()严格来说应该是一个无效函数,但是你的调用取决于它返回某些东西 - 它做了什么,但不应该。

你真正想要的是一个简单的 if 声明:

if( ! isset($_GET['type']) )
    return;

$type = $_GET['type'];

另一件事是,如果此代码在函数中,则$ type的值将不会被保留,除非它被声明为全局。