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