Rumah pembangunan bahagian belakang tutorial php 关于thinkPHP框架自动填充的原理及分析

关于thinkPHP框架自动填充的原理及分析

Jun 19, 2018 am 10:36 AM
rangka kerja thinkphp autolengkap

这篇文章主要介绍了thinkPHP框架自动填充,结合实例形式较为详细的分析了thinkPHP框架自动填充的原理、使用方法及相关操作注意事项,需要的朋友可以参考下

本文实例分析了thinkPHP框架自动填充原理与用法。分享给大家供大家参考,具体如下:

thinkphp有一个自动填充字段的方法

填充规则如下

array(
   array(完成字段1,完成规则,[完成条件,附加规则]),
   array(完成字段2,完成规则,[完成条件,附加规则]),
   ......
);
Salin selepas log masuk

注:研究源码后发现其实还有第4个参数,是给函数或者回调方法传参数用的,参数1默认为该字段值,如:

array('mobile','trim',3,'function',参数2,参数3'),
Salin selepas log masuk

验证支付动态和静态

静态验证

在模型类里面预先定义好该模型的自动验证规则,在使用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字段在更新的时候写入当前时间戳
   );
}
Salin selepas log masuk

2.在调用的时候用create方法会自动进行填充

$User = D("User"); // 实例化User对象
if (!$User->create()){ // 创建数据对象
   // 如果创建失败 表示验证没有通过 输出错误提示信息
   exit($User->getError());
}else{
   // 验证通过 写入新增数据
   $User->add();
}
Salin selepas log masuk

动态验证

以下是官方的例子

$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();
Salin selepas log masuk

下面是核心的代码分析:

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;
}
Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于smarty循环嵌套的用法

关于PHP编译configure时常见的错误

关于PHP中的静态变量及static静态变量的使用解析

Atas ialah kandungan terperinci 关于thinkPHP框架自动填充的原理及分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mengendalikan autolengkap dan autolengkap dalam borang PHP Cara mengendalikan autolengkap dan autolengkap dalam borang PHP Aug 11, 2023 pm 06:39 PM

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 Menggunakan Java untuk melaksanakan pengisian automatik data borang dan cadangan input Aug 07, 2023 pm 07:05 PM

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

Bagaimanakah php menggunakan rangka kerja ThinkPHP6? Bagaimanakah php menggunakan rangka kerja ThinkPHP6? May 31, 2023 pm 03:01 PM

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

Bentuk teknik autolengkap dalam PHP Bentuk teknik autolengkap dalam PHP May 24, 2023 am 09:31 AM

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

Panduan Rangka Kerja ThinkPHP dalam PHP Panduan Rangka Kerja ThinkPHP dalam PHP May 21, 2023 am 08:51 AM

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: Cara menggunakan rangka kerja ThinkPHP untuk pengurusan kebenaran RBAC Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pengurusan kebenaran RBAC Nov 22, 2023 pm 08:02 PM

"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? Bagaimana untuk menggunakan perangkak PHP untuk mengisi borang dan menyerahkan data secara automatik? Aug 08, 2023 pm 12:49 PM

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

Bagaimana untuk menyelesaikan masalah yang Firefox tidak boleh mengisi kata laluan akaun secara automatik selepas menyimpannya Bagaimana untuk menyelesaikan masalah yang Firefox tidak boleh mengisi kata laluan akaun secara automatik selepas menyimpannya Jan 29, 2024 pm 07:30 PM

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

See all articles