Dieses Mal werde ich Ihnen die Prinzipien und die Verwendung des automatischen Füllprinzips des thinkPHP-Frameworks ausführlich erläutern. Was sind die Vorsichtsmaßnahmen, wenn Sie das automatische Füllprinzip des thinkPHP-Frameworks verwenden? ein Blick.
thinkphp verfügt über eine Methode zum automatischen Ausfüllen von Feldern
Die Füllregeln lauten wie folgt
array( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), ...... );
Hinweis: Nach dem Studium des Quellcodes habe ich herausgefunden, dass es tatsächlich einen vierten Parameter gibt, der zum Übergeben von Parametern an Funktionen oder Rückrufmethoden verwendet wird. Parameter 1 ist standardmäßig auf den Feldwert eingestellt, wie zum Beispiel:
array('mobile','trim',3,'function',参数2,参数3'),
Überprüfen Sie die Zahlungsdynamik und die statische
Statische Überprüfung
Definieren Sie vorab die automatischen Validierungsregeln des Modell in der Modellklasse Bei Verwendung von create
Es wird nach der Methode automatisch überprüft.
Das Folgende ist das offizielle Beispiel
1 Definieren Sie zunächst die Verifizierungsregeln im Modell
namespace Home\Model; use Think\Model; class UserModel extends Model{ protected $_auto = array ( array('status','1'), // 新增的时候把status字段设置为1 array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理 array('name','getName',3,'callback'), // 对name字段在新增和编辑的时候回调getName方法 array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳 ); }
2. Beim Aufruf wird die Methode create
automatisch ausgefüllt
$User = D("User"); // 实例化User对象 if (!$User->create()){ // 创建数据对象 // 如果创建失败 表示验证没有通过 输出错误提示信息 exit($User->getError()); }else{ // 验证通过 写入新增数据 $User->add(); }
Dynamische Überprüfung
Das Folgende ist das offizielle Beispiel
$rules = array ( array('status','1'), // 新增的时候把status字段设置为1 array('password','md5',3,'function') , // 对password字段在新增和编辑的时候使md5函数处理 array('update_time','time',2,'function'), // 对update_time字段在更新的时候写入当前时间戳 ); $User = M('User'); $User->auto($rules)->create(); $User->add();
Das Folgende ist die Kerncode-Analyse:
< Nachdem die 🎜>create-Methode aufgerufen wurde, wird die-Methode aufgerufen: autoOperation
/** * 自动表单处理 * @access public * @param array $data 创建数据 * @param string $type 创建类型 * @return mixed */ private function autoOperation(&$data,$type) { if(!empty($this->options['auto'])) { $_auto = $this->options['auto']; unset($this->options['auto']); }elseif(!empty($this->_auto)){ $_auto = $this->_auto; } // 自动填充 if(isset($_auto)) { foreach ($_auto as $auto){ // 填充因子定义格式 // array('field','填充内容','填充条件','附加规则',[额外参数]) if(empty($auto[2])) $auto[2] = self::MODEL_INSERT; // 默认为新增的时候自动填充 //这里的判断是关键,$type为当前的操作状态,值为1表示是插入,值为2表示是更新 //如果当前的$type状态值等于设置的值$auto[2]或者$auto[2]的值为3,代表需要填充 if( $type == $auto[2] || $auto[2] == self::MODEL_BOTH) { if(empty($auto[3])) $auto[3] = 'string'; switch(trim($auto[3])) { case 'function': // 使用函数进行填充 字段的值作为参数 case 'callback': // 使用回调方法 $args = isset($auto[4])?(array)$auto[4]:array(); if(isset($data[$auto[0]])) { array_unshift($args,$data[$auto[0]]); } if('function'==$auto[3]) { $data[$auto[0]] = call_user_func_array($auto[1], $args); }else{ $data[$auto[0]] = call_user_func_array(array(&$this,$auto[1]), $args); } break; case 'field': // 用其它字段的值进行填充 $data[$auto[0]] = $data[$auto[1]]; break; case 'ignore': // 为空忽略 if($auto[1]===$data[$auto[0]]) unset($data[$auto[0]]); break; case 'string': default: // 默认作为字符串填充 $data[$auto[0]] = $auto[1]; } if(isset($data[$auto[0]]) && false === $data[$auto[0]] ) unset($data[$auto[0]]); } } } return $data; }
Anwendungsfallanalyse des PHP-Closure-Prinzips (OCP)
PHP-Implementierung des Algorithmus zur Aufteilung der Menge an roten Umschlägen Fall Ausführliche Erklärung
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Prinzipien und Verwendung des automatischen Füllens des thinkPHP-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!