3

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

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

通过这样做,如果请求中没有“类型”,我的函数将退出。这是使用 die() 的正确方法吗?

4

5 回答 5

3

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

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

$type = $_GET['type'];

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

于 2012-07-15T02:26:38.610 回答
1

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

于 2012-07-15T02:27:29.043 回答
1

你不能die()用来填充变量。die()终止您的代码。相反,您可以考虑以下代码:

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

于 2012-07-15T02:27:45.377 回答
1

三元运算符文档说:

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

与此 if/else 语句相同:

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

它之所以有效,是因为die()将被调用并停止脚本执行,但这不是一个好习惯。对此,您最好使用 if/else 语句并简单地调用die()if $_GET['type'] 不存在,如下所示。

if ( isset( $_GET['type'] ) )
    $type = $_GET['type'];
else 
    die('type not found');
于 2012-07-15T02:52:26.640 回答
0

die()函数将结束你的整个 PHP 进程,而不仅仅是退出你所在的函数。除此之外,代码依赖于 PHP 有点愚蠢的事实。die()严格应该是一个 void 函数,但是您的调用取决于它返回的东西——它确实如此,但不应该如此。

你真正想要的是一个简单的if语句:

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

$type = $_GET['type'];

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

于 2012-07-15T02:35:32.977 回答