Codeigniter /php私有函数中未定义属性错误


codeigniter/php error undefine property in private function

我测试new self(), $this都工作良好,但我想知道:

它们之间的区别会在以后给我带来问题吗在不同的情况下使用?

私函数load_user_record($rows)中如何获取变量

I got error undefine property please help

private function load_user_record($rows)
{
    $this->user_id = $rows->id;
    $this->hashedPassword = $rows->user_pwd;
}
private function find_user_record($user_name)
{
    $this->db->where('user_name',$user_name);
    $query = $this->db->get('tbl_user');
    $result = $query->result();
    if( $query->num_rows() > 0 )
    {
        foreach($result as $rows):

/************************* 有什么区别 ******************************/

        /*
         *  $item = new self();
         *  $item->load_user_record($rows);
         *  $user_result[] = $item;
         */
            $this->load_user_record($rows);
            $user_result[] = $this;

/************************* 在这里结束 ******************************/

        endforeach;
        return $user_result;
    }
    return FALSE;
}
public function check_user_exist($user_name, $password)
{
    $find_user = $this->find_user_record($user_name);
    if($find_user !== FALSE)
    {

/********************* 这里的错误未赋值属性 *********************/

            foreach($find_user as $user):
            /* $user_id = $user->user_id;
             * $hashed_password = $user->hashed_password;
             * using this 2 variable above work
             */
               $this->load_user_record($user);
            // using this load_user_record not work
            endforeach;

/************************* 在这里结束 ******************************/

        if( password_verify( $password, $hashedPassword )) {
            if (password_needs_rehash($hashedPassword, PASSWORD_DEFAULT)) {
                $time = date("Y-m-d H:i:s");
                $newHashedPassword = password_hash($password, PASSWORD_DEFAULT);
                $this->db->where('id',$user_id)
                         ->set(array(
                            'user_pwd' => $newHashedPassword,
                            'last_login' => $time
                         ));
                if(!$this->db->update('tbl_user'))
                    return FALSE;
            }
            return TRUE;
        }
        return FALSE;
    }
    return FALSE;
}

错误发生

遇到PHP错误

严重性:注意

Message: Undefined property: Login::$id

文件名:核心/Model.php

行号:77

回溯:

文件:C: ' wamp ' www ' CodeIgniter_Project '程序' '后端' Login_model.php模型函数:__get

文件:C: ' wamp ' www ' CodeIgniter_Project '程序' '后端' Login_model.php模型功能:load_user_record

文件:C: ' wamp ' www ' CodeIgniter_Project '程序'控制器'端' login行:27功能:check_user_exist

File: C:'wamp'www'CodeIgniter_Project'index.php Line: 316require_once


遇到PHP错误

严重性:注意

Message: Undefined property: Login::$user_pwd

文件名:核心/Model.php

行号:77

回溯:

文件:C: ' wamp ' www ' CodeIgniter_Project '程序' '后端' Login_model.php模型Function: __get

文件:C: ' wamp ' www ' CodeIgniter_Project '程序' '后端' Login_model.php模型功能:load_user_record

文件:C: ' wamp ' www ' CodeIgniter_Project '程序'控制器'端' login行:27功能:check_user_exist

File: C:'wamp'www'CodeIgniter_Project'index.php Line: 316require_once


遇到PHP错误

严重性:注意

消息:Undefined variable: hashhedpassword

文件名:后端/Login_model.php

行号:53

回溯:

文件:C: ' wamp ' www ' CodeIgniter_Project '程序' '后端' Login_model.php模型函数:_error_handler

文件:C: ' wamp ' www ' CodeIgniter_Project '程序'控制器'端' login行:27功能:check_user_exist

File: C:'wamp'www'CodeIgniter_Project'index.php Line: 316require_once

和我的代码是正确的OOP吗?如果我在OOP中犯了错误,请不要介意,这是我在OOP中的第一个代码。

在循环中使用了相同的变量$find_user。将代码改为:

foreach($find_user as $user):
        $this->load_user_record($user);
endforeach;