Cet article présente principalement le remplissage automatique du framework thinkPHP. Il analyse en détail sous forme d'exemples les principes, les méthodes d'utilisation et les précautions de fonctionnement associées au remplissage automatique du framework thinkPHP. >
Des exemples analysent les principes et l'utilisation du remplissage automatique dans le framework thinkPHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :thinkphp a une méthode pour remplir automatiquement les champs
Les règles de remplissage sont comme suitarray( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), ...... );
Remarque : après avoir étudié le code source, j'ai découvert qu'il existe en fait un quatrième paramètre, qui est utilisé pour transmettre des paramètres aux fonctions ou aux méthodes de rappel. Le paramètre 1 est par défaut sur ce champ Valeur , tel que :
array('mobile','trim',3,'function',参数2,参数3'),
Vérifier le paiement. dynamique et statique
Vérification statique
Prédéfinissez les règles de vérification automatique du modèle dans la classe de modèle, et il sera automatiquement vérifié après avoir utilisé la méthode. create
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字段在更新的时候写入当前时间戳 ); }
pour remplir automatiquement create
$User = D("User"); // 实例化User对象 if (!$User->create()){ // 创建数据对象 // 如果创建失败 表示验证没有通过 输出错误提示信息 exit($User->getError()); }else{ // 验证通过 写入新增数据 $User->add(); }
vérification dynamique
en dessous est un exemple officiel$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();
Ce qui suit est l'analyse du code de base :
La méthode de création sera appelé après son appelLa méthode est la suivanteautoOperation
/** * 自动表单处理 * @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; }
À propos de l'utilisation de l'imbrication de boucles intelligentes
À propos des erreurs courantes lors de la compilation de configure en PHP
Analyse sur l'utilisation des variables statiques et des variables statiques en PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!