Php Can';t在写上下文中使用函数返回值
我有一节简单的课程Php Can';t在写上下文中使用函数返回值,php,class,session,Php,Class,Session,我有一节简单的课程 class Session { public static function init() { @session_start(); } public static function set($key, $value) { $_SESSION[$key] = $value; } public static function get($key) { if (isset($_SESSION[$
class Session
{
public static function init() {
@session_start();
}
public static function set($key, $value) {
$_SESSION[$key] = $value;
}
public static function get($key) {
if (isset($_SESSION[$key]))
return $_SESSION[$key];
}
public static function destroy() {
unset($_SESSION);
session_destroy();
}
}
在我的另一节课上,我有
public function verifyFormToken($form)
{
// check if a session is started and a token is transmitted, if not return an error
if(!isset(Session::get($form.'_token'))){
return false;
}
// check if the form is sent with token in it
if(!isset($data['token'])) {
return false;
}
// compare the tokens against each other if they are still the same
if (Session::get($form.'_token') !== $data['token']) {
return false;
}
return true;
}
我可以毫无问题地设置会话,但当我使用verifyFormToken()
获取会话时,会收到此错误消息
无法在写上下文中使用函数返回值
哪个指向这条线
if(!isset(Session::get($form.'_token'))){
您必须将变量定义为传递给isset:
$token = Session::get($form.'_token');
if ($token !== NULL) { ... }
或者在get方法中使用isset时,只需执行以下操作:
if (Session::get($form.'_token') !== NULL) { ... }
编辑**
在本例中,这很好,因为会话令牌永远不会为null,但作为会话控制器,值可能会被故意设置为null,也可能不会被设置,因此get方法需要返回唯一的值来确定其设置是否为null。i、 e
define('MY_SESSION_NOT_SET',md5('value_not_set'));
class Session
{
public static function init() {
@session_start();
}
public static function set($key, $value) {
$_SESSION[$key] = $value;
}
public static function get($key) {
if (isset($_SESSION[$key]))
return $_SESSION[$key];
else
return MY_SESSION_NOT_SET;
}
public static function destroy() {
unset($_SESSION);
session_destroy();
}
}
if (Session::get($form.'_token') === MY_SESSION_NOT_SET) { ... }
这样做会更有益。Isset不是一个常规函数。它是语言结构。所以它只需要变量:@Phantom我要写这个作为答案。。。我同意你的看法,这就是问题所在。@Phantom正确,但同时在方法上调用isset也没有任何意义!!从逻辑上讲,你的说法就是这个方法集。。虽然我知道它不会这么做。。哈哈。他们没有在新版本中更改它。但是他们让这个错误变得更加用户友好
致命错误:无法对函数调用的结果使用isset()(您可以使用“null!==func()”)
是的,对不起,我更多地考虑了其他构造,如empty(),因为我认为在以后的版本中可以使用。我真的没想清楚。谢谢@RaggaMugffin-420……这解决了我的问题。这已经有很多年了,但只是决定做点什么