当我填充变量时,我可以做这样的事情吗?:
$type = isset( $_GET['type'] ) ? $_GET['type'] : die();
通过这样做,如果请求中没有“类型”,我的函数将退出。这是使用 die() 的正确方法吗?
当我填充变量时,我可以做这样的事情吗?:
$type = isset( $_GET['type'] ) ? $_GET['type'] : die();
通过这样做,如果请求中没有“类型”,我的函数将退出。这是使用 die() 的正确方法吗?
如果您只想退出函数return
,请使用. 但是,它不是表达式,因此您需要将其更改为if
语句:
if(!isset($_GET['type'])) {
return;
}
$type = $_GET['type'];
如果您确实希望整个页面停止执行,那么是的,那是正确的(但为了清楚起见,我仍然使用 an if
)。
是和不是。是的,你所做的在技术上是正确的,如果变量不存在,它将终止脚本,但如果你想测试你的代码,你不应该使用该die
构造。PHP 是一种面向对象的语言(从第 5 版开始),并且是一种非常强大的语言。它支持使用您可能想在此处使用的高级错误处理异常。
你不能die()
用来填充变量。die()
终止您的代码。相反,您可以考虑以下代码:
$type = isset( $_GET['type'] ) ? $_GET['type'] : null;
三元运算符文档说:
$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');
die()函数将结束你的整个 PHP 进程,而不仅仅是退出你所在的函数。除此之外,代码依赖于 PHP 有点愚蠢的事实。die()严格应该是一个 void 函数,但是您的调用取决于它返回的东西——它确实如此,但不应该如此。
你真正想要的是一个简单的if语句:
if( ! isset($_GET['type']) )
return;
$type = $_GET['type'];
另一件事是,如果此代码在函数中,则 $type 的值将不会被保留,除非它被声明为全局。