[英]issue with static class property in php
I am working on a simple anonymous login system and I have a Session
class which looks like this: 我正在使用一个简单的匿名登录系统,并且有一个
Session
类,如下所示:
<?php
class Session
{
private static $cookieLifeSpanInDays;
public function __construct()
{
self::$cookieLifeSpanInDays = 1825;
}
public static function loginUser()
{
if (!Session::isLoggedIn())
{
// Login User
$session_id = Session::newSessionId();
$name = Session::newUserName($session_id);
if (empty($name))
throw new Exception('Failed to generate a unique user name. Try again later.');
DB::insert('users', array(
'name' => $name,
'session_id' => $session_id,
'last_login' => time()
));
setcookie("sessionId", $session_id, time() + (self::$cookieLifeSpanInDays * 86400), '/', $_SERVER['HTTP_HOST']);
$_SESSION['isLoggedIn'] = true;
var_dump(self::$cookieLifeSpanInDays);
var_dump($_COOKIE);
exit();
}
// Defaults
return true;
}
}
When I call the class like this: Session::loginUser();
当我像这样调用该类时:
Session::loginUser();
The var_dumps()
in the loginUser
function looks like this: loginUser
函数中的var_dumps()
如下所示:
So, my login function is broken (no cookie is getting set) because the static property on class self::$cookieLifeSpanInDays
is null. 因此,我的登录功能已损坏(未设置cookie),因为类
self::$cookieLifeSpanInDays
上的静态属性为null。 What am I doing wrong here? 我在这里做错了什么?
I've fixed it: 我已经解决了:
<?php
class Session
{
private static $cookieLifeSpanInDays = 1825;
public static function loginUser()
{
if (!Session::isLoggedIn())
{
// Login User
$session_id = Session::newSessionId();
$name = Session::newUserName($session_id);
if (empty($name))
throw new Exception('Failed to generate a unique user name. Try again later.');
DB::insert('users', array(
'name' => $name,
'session_id' => $session_id,
'last_login' => time()
));
setcookie("sessionId", $session_id, time() + (self::$cookieLifeSpanInDays * 86400));
$_SESSION['isLoggedIn'] = true;
var_dump(self::$cookieLifeSpanInDays);
var_dump($_COOKIE);
exit();
}
// Defaults
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.