codeigniter / php错误私有函数

时间:2016-10-18 07:55:11

标签: php codeigniter oop

我测试new self()$this两者都运行正常,但我想知道:

  

它们之间有什么区别会在以后引起问题   在不同的情况下使用?

如何在私有函数load_user_record($rows)

中获取变量
  

我收到错误 undefine property 请帮助

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)
    {

/ ********************* HERE错误未定义财产********************* /

            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错误

     

严重性:注意

     

消息:未定义属性:Login :: $ id

     

文件名:core / Model.php

     

行号:77

     

回溯:

     

文件:   C:\ WAMP \ WWW \ CodeIgniter_Project \程序\型号\后端\ Login_model.php   行:10功能:__ get

     

文件:   C:\ WAMP \ WWW \ CodeIgniter_Project \程序\型号\后端\ Login_model.php   行:49功能:load_user_record

     

文件:   C:\瓦帕\ WWW \ CodeIgniter_Project \应用\控制器\后端\ login.php中   行:27功能:check_user_exist

     

文件:C:\ wamp \ www \ CodeIgniter_Project \ index.php行:316功能:   require_once

  

遇到PHP错误

     

严重性:注意

     

消息:未定义属性:Login :: $ user_pwd

     

文件名:core / Model.php

     

行号:77

     

回溯:

     

文件:   C:\ WAMP \ WWW \ CodeIgniter_Project \程序\型号\后端\ Login_model.php   行:11功能:__ get

     

文件:   C:\ WAMP \ WWW \ CodeIgniter_Project \程序\型号\后端\ Login_model.php   行:49功能:load_user_record

     

文件:   C:\瓦帕\ WWW \ CodeIgniter_Project \应用\控制器\后端\ login.php中   行:27功能:check_user_exist

     

文件:C:\ wamp \ www \ CodeIgniter_Project \ index.php行:316功能:   require_once

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:hashedPassword

     

文件名:backend / Login_model.php

     

行号:53

     

回溯:

     

文件:   C:\ WAMP \ WWW \ CodeIgniter_Project \程序\型号\后端\ Login_model.php   行:53功能:_error_handler

     

文件:   C:\瓦帕\ WWW \ CodeIgniter_Project \应用\控制器\后端\ login.php中   行:27功能:check_user_exist

     

文件:C:\ wamp \ www \ CodeIgniter_Project \ index.php行:316功能:   require_once

我的代码是否在OOP中?如果我在OOP中出错了,请不要介意我,这是我在OOP中的第一个代码。

1 个答案:

答案 0 :(得分:0)

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

foreach($find_user as $user):

        $this->load_user_record($user);

endforeach;