关于thinkPHP框架自动填充的原理及分析
这篇文章主要介绍了thinkPHP框架自动填充,结合实例形式较为详细的分析了thinkPHP框架自动填充的原理、使用方法及相关操作注意事项,需要的朋友可以参考下
本文实例分析了thinkPHP框架自动填充原理与用法。分享给大家供大家参考,具体如下:
thinkphp有一个自动填充字段的方法
填充规则如下
array( array(完成字段1,完成规则,[完成条件,附加规则]), array(完成字段2,完成规则,[完成条件,附加规则]), ...... );
注:研究源码后发现其实还有第4个参数,是给函数或者回调方法传参数用的,参数1默认为该字段值,如:
array('mobile','trim',3,'function',参数2,参数3'),
验证支付动态和静态
静态验证
在模型类里面预先定义好该模型的自动验证规则,在使用create
方法后会自动去验证。
以下是官方的例子
1.首先在模型中定义好验证的规则
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.在调用的时候用create
方法会自动进行填充
$User = D("User"); // 实例化User对象 if (!$User->create()){ // 创建数据对象 // 如果创建失败 表示验证没有通过 输出错误提示信息 exit($User->getError()); }else{ // 验证通过 写入新增数据 $User->add(); }
动态验证
以下是官方的例子
$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();
下面是核心的代码分析:
create方法调用后会调用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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Atas ialah kandungan terperinci 关于thinkPHP框架自动填充的原理及分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara Mengendalikan Autolengkap dan Autolengkap dalam Borang PHP Semasa Internet berkembang, orang ramai semakin bergantung pada ciri autolengkap dan autolengkap untuk memudahkan operasi mereka di tapak web. Melaksanakan fungsi ini dalam borang PHP tidaklah rumit Artikel ini akan memperkenalkan secara ringkas cara menggunakan PHP untuk mengendalikan auto-isi dan auto-lengkap borang. Sebelum kita mula, kita perlu menjelaskan apa itu autolengkap dan autolengkap. Autolengkap merujuk kepada mengisi medan secara automatik dalam borang untuk pengguna berdasarkan input atau sejarah mereka sebelum ini. Contohnya, apabila pengguna memasukkan e-mel

Menggunakan Java untuk melaksanakan pengisian automatik data borang dan cadangan input Dalam beberapa tahun kebelakangan ini, dengan perkembangan Internet, pengisian data borang telah menjadi sebahagian daripada kehidupan seharian kita. Walau bagaimanapun, mengisi sejumlah besar data borang sering menyebabkan beberapa masalah kepada pengguna, terutamanya apabila memasukkan data berulang. Untuk meningkatkan kecekapan dan pengalaman mengisi pengguna, kami boleh menggunakan bahasa Java untuk melaksanakan pengisian automatik data borang dan cadangan input. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan fungsi ini dan menyediakan contoh kod untuk rujukan. Pertama, kita perlukan

Memandangkan pembangunan web terus berkembang, pembangun perlu menggunakan beberapa alatan dan rangka kerja praktikal untuk menjimatkan masa dan usaha sambil meningkatkan kualiti aplikasi mereka. ThinkPHP ialah rangka kerja PHP popular yang sangat memudahkan pembangunan dan meningkatkan kecekapan. Dalam artikel ini, kita akan belajar cara menggunakan rangka kerja ThinkPHP6 versi terkini. Keperluan persekitaran Mula-mula, anda perlu mengesahkan bahawa sistem anda memenuhi keperluan berikut: PHP versi 7.1 dan ke atas MySQL versi 5.5 dan ke atas Komposer ialah

Dengan perkembangan Internet yang berterusan, borang telah menjadi salah satu fungsi yang digunakan di laman web harian kami. Mendapatkan pengguna untuk mengisi borang sudah pasti tugas yang membosankan, jadi anda perlu menggunakan beberapa helah untuk memudahkan proses. Artikel ini akan memperkenalkan teknik untuk melaksanakan autoisi borang dalam PHP. 1. Gunakan nilai lalai Apabila menetapkan nilai lalai borang, anda boleh menggunakan atribut "nilai" dalam teg borang untuk menentukannya. Berikut ialah contoh: <inputtype="text"name=&q

ThinkPHP ialah rangka kerja sumber terbuka PHP yang terkenal Ia dicirikan oleh kecekapan, kesederhanaan dan kemudahan penggunaan, dan boleh membina aplikasi Web berskala besar dengan cepat. Artikel ini akan memperkenalkan anda kepada penggunaan dan langkah berjaga-jaga rangka kerja ThinkPHP. 1. Pemasangan rangka kerja ThinkPHP 1. Muat turun rangka kerja ThinkPHP Anda boleh memuat turun pakej mampat ThinkPHP di tapak web rasmi (http://www.thinkphp.cn/) dan nyahzipnya. Anda juga boleh memasangnya melalui Komposer

"Cadangan Pembangunan untuk Menggunakan Rangka Kerja ThinkPHP untuk Pengurusan Kebenaran RBAC" Dengan pembangunan Internet, semakin banyak aplikasi Web perlu melaksanakan fungsi pengurusan kebenaran untuk memastikan keselamatan dan kebolehkawalan sistem. RBAC (Role-BasedAccessControl, kawalan akses berasaskan peranan), sebagai model pengurusan kebenaran matang, telah digunakan secara meluas dalam pembangunan sebenar. ThinkPHP ialah rangka kerja PHP popular yang menyediakan fungsi yang kaya dan sambungan fleksibel.

Bagaimana untuk menggunakan perangkak PHP untuk mengisi borang dan menyerahkan data secara automatik? Dengan perkembangan Internet, kita semakin perlu mendapatkan data daripada laman web, atau secara automatik mengisi borang dan menyerahkan data. Sebagai bahasa bahagian pelayan yang berkuasa, PHP menyediakan pelbagai alatan dan perpustakaan kelas untuk melaksanakan fungsi ini. Dalam artikel ini, kami akan menerangkan cara menggunakan perangkak dalam PHP untuk mengisi borang dan menyerahkan data secara automatik. Pertama, kita perlu menggunakan perpustakaan curl dalam PHP untuk mendapatkan dan menyerahkan data halaman web. Perpustakaan curl adalah yang berkuasa

Apakah yang perlu saya lakukan jika Firefox tidak dapat mengisi kata laluan akaun secara automatik selepas menyimpannya Kami telah memilih untuk menyimpan kata laluan akaun, tetapi apakah yang perlu saya lakukan jika ia tidak dapat mengisinya secara automatik? Apabila kami menggunakan Firefox untuk log masuk ke akaun dan kata laluan kami, penyemak imbas akan meminta kami sama ada kami ingin menyimpannya, tetapi apabila kami membuka penyemak imbas seterusnya, akaun dan kata laluan masih tidak diisi secara automatik . Bagaimana untuk menyelesaikannya, seperti berikut Editor telah menyelesaikan masalah yang Firefox tidak boleh mengisi kata laluan akaun secara automatik selepas menyimpannya. Jika tidak, ikuti saya di bawah! Apakah yang perlu saya lakukan jika Firefox tidak dapat mengisi kata laluan akaun secara automatik selepas menyimpannya 1. Buka Firefox, klik ikon "Buka Menu" di sudut kanan atas pelayar, dan klik "Pilihan" dalam senarai menu di bawah untuk membuka? panel pilihan penyemak imbas. 2. Dalam api
