这是我有点挑剔,但我真的很喜欢$_SESSION
的工作轻松。所以我想知道是否有办法让我在数据库中使用这样的行。我很容易创建一个超全局,例如$_DATA['address']
将返回当前登录用户数据库中保存的地址。显而易见的问题是,当我自动向$_DATA['whatever']
写入内容时会把它写入数据库。这在C#中很容易,我习惯了,但在PHP中似乎没有正常的get / set功能。我有什么方法可以完成我希望做的事情吗?
答案 0 :(得分:1)
您可以创建一个类并为其提供一些静态辅助函数
例如:
class CurrentUser {
protected static $currentUser;
protected static function getCurrentUser(){
if (!static::$currentUser){
// get the current user from db and assign it to the currentUser Property
}
return static::$currentUser;
}
public static function get($property){
return isset(static::getCurrentUser()->$property)?static::$currentUser->$property:null;
}
public static function set($property, $value){
// make sure we have the current user
$user = static::getCurrentUser();
if ($user){
$user->$property = $value;
// save the user to the database.
}
}
}
要使用,那么你只需说
echo CurrentUser::get("address");
echo CurrentUser::set("address", "123 anystreet, anytown US 12345");
答案 1 :(得分:0)
你可以使用像Yii这样的框架,它有像CActiveRecord这样的类,可以映射到数据库中的行。
$u = User::model()->findByPk(1);
$u->username = "fred";
$u.save();
如果您保留对该对象的引用,则可以在每次需要时保存该记录。