drr25281 2014-07-30 07:42
浏览 14
已采纳

PHP无法从对象回显用户的名称

I'm trying to use a session var and call the logged in users details through object on the page. The user has already logged in through my login object. Here are my objects:

class User {
   public $userdata = array();


//instantiate The User Class
   public function User(){  }

public function set($var, $value) {
    $this->userdata[$var] = $value; 
}

public function get($var) {
    if(isset($this->userdata[$var]))
    {
        return $this->userdata[$var];
    }
    return NULL;
}

  function __destruct() {
    if($this->userdata){
       $this->userdata;
    }
  } 
}

class UserService {
private $db;
private $fields;
public $user;
private $session;


    public function __construct() {
        $this->db = new Database();

    }



//  //get current user by ID
    public function getCurrentUser($session) {

            $this->session = $session;

        $query = sprintf("SELECT * FROM User WHERE idUser=%s",
        $this->db->GetSQLValueString($this->session, "int"));
        $result = $this->db->query($query);

         if($result && $this->db->num_rows($result) > 0){

            //create new user
                $user = new User();
                $row = $this->db->fetch_assoc($result);

            //set as object
            foreach($row as $key => $value) {
                $user->set($key, $value);

                break;
            }
            return $user;
            //return $this->user;

        }
        return NULL;    


    }
 }

On my page I've check my session var has a value which it does, so I call the object like so.

 $um = new UserService();
 $user = $um->getCurrentUser($_SESSION['MM_Username']);
 echo $user->get('UserSurname');

however, I see no user surname on the page. I have checked with a none object query and I see a surname but as soon as its object is doesn't work.

  • 写回答

2条回答 默认 最新

  • dqphg40600 2014-07-30 07:46
    关注

    I think the problem is here:

    foreach($row as $key => $value) {
                    $user->set($key, $value);
    
                    break; // you should probably remove it
                }
    

    You should use unnecessary break and probably after setting for example id you stop setting another object properties (UserSurname, Name and so on).

    In addition it's quite confusing that inside $_SESSION['MM_Username'] you store idUser and not UserName

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题