首頁  >  文章  >  後端開發  >  thinkphp中create方法自動建立表單資料之後,會把表單中的欄位當作模型物件的屬性保存嗎?

thinkphp中create方法自動建立表單資料之後,會把表單中的欄位當作模型物件的屬性保存嗎?

WBOY
WBOY原創
2016-09-08 08:43:58950瀏覽

控制器中的程式碼:

<code>if(IS_POST){
            if($model->validate($model->_login_validate)->create()){
                
                if($model->login()){
                    if($res = session('returnUrl')){
                        session('returnUrl',null);
                        $returnUrl = $res;
                    }else{
                        $returnUrl = U('/');
                    }
                    
                    $this->success('登陆成功!',$returnUrl);
                    die;
                }
            }
            $this->error($model->getError());
        }
</code>

模型中的程式碼:

<code>public function login(){
        var_dump($this);die;    //这里打印$this并没有找到username和password这两个属性,可是为什么下面的$username可以取到值呢??
        $username = $this->username;
        $password = $this->password;
        $model = M('Member');

        $where['username'] = $username;
        $user = $model->where($where)->find();
        。。。
}
</code>

回覆內容:

控制器中的程式碼:

<code>if(IS_POST){
            if($model->validate($model->_login_validate)->create()){
                
                if($model->login()){
                    if($res = session('returnUrl')){
                        session('returnUrl',null);
                        $returnUrl = $res;
                    }else{
                        $returnUrl = U('/');
                    }
                    
                    $this->success('登陆成功!',$returnUrl);
                    die;
                }
            }
            $this->error($model->getError());
        }
</code>

模型中的程式碼:

<code>public function login(){
        var_dump($this);die;    //这里打印$this并没有找到username和password这两个属性,可是为什么下面的$username可以取到值呢??
        $username = $this->username;
        $password = $this->password;
        $model = M('Member');

        $where['username'] = $username;
        $user = $model->where($where)->find();
        。。。
}
</code>

是存在data裡面的 用get讀取不存在的屬性 然後到data裡面 同樣 可以set 設定屬性 也就是物件 後面直接加屬性

<code> public function __get($name) {
        return isset($this->data[$name])?$this->data[$name]:null;
    }
    
    public function __set($name,$value) {
        // 设置数据对象属性
        $this->data[$name]  =   $value;
    }</code>

會的,雖然沒這樣寫過 不過我印過create後的物件 發現有這些屬性

<code>$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->create($data);
// 创建完成数据对象后可以直接读取数据
echo $User->name;
echo $User->email;
// 也可以直接修改创建完成的数据
$User->name = 'onethink'; // 修改name字段数据
$User->status = 1; // 增加新的字段数据</code>

http://www.kancloud.cn/manual...
從3.2.3文檔找了這麼一段。你create()後 你所訪問的 $this->name; 這應該是被創建後的屬性
你var_dump($model);試試。 。

thinkphp中create方法自動建立表單資料之後,會把表單中的欄位當作模型物件的屬性保存嗎?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn