Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 写入上下文中的方法返回值错误_Php - Fatal编程技术网

Php 写入上下文中的方法返回值错误

Php 写入上下文中的方法返回值错误,php,Php,我目前正在学习MVC的基础知识。我遇到一个php致命错误,代码如下。错误状态 无法在写入上下文中使用方法返回值。我怎样才能解决这个问题 $module = empty( $uri->fragment(0) ) ? 'index' : $uri->fragment(0); 您遇到了PHP的许多小怪癖之一:) 在PHP5.5之前,empty仅对变量起作用(有关的更多信息)。这意味着您需要首先将$url->fragment(0)分配给以下内容: $fragment = $uri-

我目前正在学习MVC的基础知识。我遇到一个php致命错误,代码如下。错误状态
无法在写入上下文中使用方法返回值
。我怎样才能解决这个问题

    $module = empty( $uri->fragment(0) ) ? 'index' : $uri->fragment(0);

您遇到了PHP的许多小怪癖之一:)

在PHP5.5之前,
empty
仅对变量起作用(有关的更多信息)。这意味着您需要首先将
$url->fragment(0)
分配给以下内容:

$fragment = $uri->fragment(0);
$module = empty($fragment) ? 'index' : $fragment;
因为存在不是问题,所以这里实际上不需要空(
empty($var)
相当于
isset($var)&&$var
):



在这种情况下,这无关紧要,但作为一条一般性建议,请小心使用带字符串的
empty
。在角落的情况下,它可能会有一些“wtf”时刻。例如,所有形式的
0
都被认为是空的(
0
“0”
0.0
)。

这是因为
empty()
是一种语言构造,直到最近它才允许变量引用作为其参数,而您的代码传递一个返回值(它不是引用)

幸运的是,因为返回值不是未定义或不存在的,所以可以使用缩短的:

在5.3版本之前,您必须使用较长的版本:

$module = $uri->fragment(0) ? $uri->fragment(0) : 'index';
$module = $uri->fragment(0) ?: 'index';
$module = $uri->fragment(0) ? $uri->fragment(0) : 'index';