>  기사  >  백엔드 개발  >  thinkphp의 create 메소드가 자동으로 양식 데이터를 생성한 후 양식의 필드가 모델 객체의 속성으로 저장됩니까?

thinkphp의 create 메소드가 자동으로 양식 데이터를 생성한 후 양식의 필드가 모델 객체의 속성으로 저장됩니까?

WBOY
WBOY원래의
2016-09-08 08:43:58982검색

컨트롤러의 코드:

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

은 데이터에 저장됩니다. 존재하지 않는 속성을 읽은 다음 데이터로 이동합니다. 마찬가지로 객체인 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>

네, 이렇게 쓴 적은 없지만 생성 후 객체를 인쇄해 보니 이러한 속성이 있는 것을 발견했습니다

<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으로 문의하세요.