每次创建页面时,我都会实例化一个新的Layout。
当用户登录时,会实例化一个新的User。
如何让布局类知道已实例化的用户?我也可以将整个User实例保存在会话变量中。但我认为这不是一个好主意。有什么最佳实践吗?
class User
{
var $userid;
var $email;
var $username;
function User($user)
{
$this->userid = $this->getUid($user);
$this->email = $this->getEmail($user);
$this->username = $user;
}
function getUid($u)
{
...
}
function getEmail($u)
{
...
}
}
class Layout
{
var $var1;
var $var2;
var $var3;
function Layout()
{
//defaults...
}
function function1()
{
echo "something";
}
function function2()
{
echo "some other stuff";
}
function function3()
{
echo "something else";
}
}
例如,在index.php中,我会执行以下操作:
include "user.php"
include "layout.php"
$homelayout = new Layout();
$homelayout->function1();
$homelayout->function2();
$homelayout->function3();
现在假设有人在login.php中登录:
include "layout.php"
include "user.php"
if(userAuthSuccess)
{
$currentUser = new User($_POST['username']);
}
如何在用户未注销的情况下,从所有php文件中访问$currentUser及其成员变量(例如$currentUser->email等)?
最好的方法是将$currentUser保存在会话(session)中。当用户登录时,将$currentUser存储在会话中,并在需要访问该用户数据时,从会话中检索它。
$_SESSION
不支持对象。 - Dolph