Rumah pembangunan bahagian belakang tutorial php TP5单例模式操作Model

TP5单例模式操作Model

May 03, 2018 am 11:11 AM
model beroperasi model

这篇文章主要介绍了关于TP5单例模式操作Model,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

一 丶创建数据库和数据库配置

 1. 数据库设计如下

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `u_id` int(255) NOT NULL AUTO_INCREMENT,
  `u_name` varchar(50) NOT NULL,
  `u_age` int(3) DEFAULT NULL,
  `u_sex` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Salin selepas log masuk

2. database.php

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------

return [
    // 数据库类型
    &#39;type&#39;            => &#39;mysql&#39;,
    // 服务器地址
    &#39;hostname&#39;        => &#39;127.0.0.1&#39;,
    // 数据库名
    &#39;database&#39;        => &#39;singletons&#39;,
    // 用户名
    &#39;username&#39;        => &#39;root&#39;,
    // 密码
    &#39;password&#39;        => &#39;123456&#39;,
    // 端口
    &#39;hostport&#39;        => &#39;3306&#39;,
    // 连接dsn
    &#39;dsn&#39;             => &#39;&#39;,
    // 数据库连接参数
    &#39;params&#39;          => [],
    // 数据库编码默认采用utf8
    &#39;charset&#39;         => &#39;utf8&#39;,
    // 数据库表前缀
    &#39;prefix&#39;          => &#39;u_&#39;,
    // 数据库调试模式
    &#39;debug&#39;           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    &#39;deploy&#39;          => 0,
    // 数据库读写是否分离 主从式有效
    &#39;rw_separate&#39;     => false,
    // 读写分离后 主服务器数量
    &#39;master_num&#39;      => 1,
    // 指定从服务器序号
    &#39;slave_no&#39;        => &#39;&#39;,
    // 是否严格检查字段是否存在
    &#39;fields_strict&#39;   => true,
    // 数据集返回类型
    &#39;resultset_type&#39;  => &#39;array&#39;,
    // 自动写入时间戳字段
    &#39;auto_timestamp&#39;  => false,
    // 时间字段取出后的默认时间格式
    &#39;datetime_format&#39; => &#39;Y-m-d H:i:s&#39;,
    // 是否需要进行SQL性能分析
    &#39;sql_explain&#39;     => false,
];
Salin selepas log masuk

二 丶MVC 三者的分离

1.Controller

新建controller:Users.php

2.Model

新建model文件Users.php

3.View

新建users文件夹并新建index.html文件

三丶tp5单例模式的代码实现

1.为什么要使用单例模式

使用单例模式实现逻辑处理与数据库操作分离能很大提升mysql的sql处理能力,并且易于维护

2.controller只处理逻辑,model只处理数据库操作

3.实例,代码如下

HTML:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8"> 
	<title>TP5.0单例模式</title>
	<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
	<script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
	<script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<p style="margin-top:20%;">
	<form class="form-horizontal" role="form" method="POST" action="{:url(&#39;users/add&#39;)}">
		<p class="form-group">
			<label for="firstname" class="col-sm-2 control-label">Id</label>
			<p class="col-sm-6">
				<input type="text" class="form-control" name="id" id="id" 
					   placeholder="id">
			</p>
		</p>
		<p class="form-group">
			<label for="lastname" class="col-sm-2 control-label">Name</label>
			<p class="col-sm-6">
				<input type="text" class="form-control" name="name" id="name" 
					   placeholder="Name">
			</p>
		</p>
		<p class="form-group">
			<p class="col-sm-offset-2 col-sm-10">
				<p class="checkbox">
					<label>
						<input type="checkbox"> Remember me
					</label>
				</p>
			</p>
		</p>
		<p class="form-group">
			<p class="col-sm-offset-2 col-sm-10">
				<button type="submit" class="btn btn-default">Go</button>
			</p>
		</p>
	</form>
</p>
</body>
</html>
Salin selepas log masuk

路由设置

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
Route::rule(&#39;add&#39;,&#39;users/add&#39;,&#39;GET&#39;); // 添加

Route::rule(&#39;del&#39;,&#39;users/del&#39;,&#39;GET&#39;); // 删除

Route::rule(&#39;update&#39;,&#39;users/update&#39;,&#39;GET&#39;); // 更新

Route::rule(&#39;query&#39;,&#39;users/query&#39;,&#39;GET&#39;);// 查询

Route::rule(&#39;batchupdate&#39;,&#39;users/batchupdate&#39;,&#39;GET&#39;); // 更新多个
Salin selepas log masuk

Controller

<?php
namespace app\index\controller;
use app\index\model\Users as UsersModel;
use think\Controller;
use think\Db;
class Users extends Controller
{   
    /**
    * 模板渲染
    */
    public function index()
    {
        return view(&#39;index&#39;);
    }
    /**
    * 添加一条数据
    */
    public function add()
    {
        $u_id = intval(input(&#39;id&#39;));
        $u_name = input(&#39;name&#39;);
        $u_age = 18;
        $u_sex = 0;
        $insertOne = UsersModel::insertOne($u_id,$u_name,$u_age,$u_sex);
        if($insertOne)
        {
            $this->success("插入".$u_name."成功");
        }
        else{
            $this->error("插入".$u_name."失败");
        }
    }
    /**
    * 删除一条数据(硬删除)
    */
    public function del()
    {
        $u_id = intval(input(&#39;id&#39;));
        $delOne = UsersModel::deleteOne($u_id);
        if($delOne)
        {
            $this->success("删除".$u_id."成功");
        }
        else{
            $this->error("删除".$u_id."失败");
        }
    }
    /**
    * 更新
    */
    public function update()
    {
        $u_id = intval(input(&#39;id&#39;));
        $u_age = 18;
        $updateOne = UsersModel::updateOne($u_id,$u_age);
        if($updateOne)
        {
            $this->success("更新".$u_id."的年龄为".$u_age."成功");
        }
        else{
            $this->error("更新".$u_id."的年龄为".$u_age."失败");
        }
    }
    /**
    * 查询
    */
    public function query()
    {   
        $filed = "u_id,u_age"; //多个字段以逗号隔开
        $u_id = "";
        $query = UsersModel::query($filed,$u_id);
        dump($query);
    }
    /**
    * 批量修改
    */
    public function batchupdate()
    {
        $array = array(array(&#39;u_id&#39;=>1,&#39;u_name&#39;=>&#39;deng&#39;,&#39;u_age&#39;=>18,&#39;u_sex&#39;=>1),array(&#39;u_id&#39;=>2,&#39;u_name&#39;=>&#39;yuan&#39;,&#39;u_age&#39;=>19,&#39;u_sex&#39;=>2));
        $updateall = UsersModel::batchUpdate($arr);
        if($updateall)
        {
            $this->success("success");
        }
        else{
            $this->error("error");
        }
    }
}
Salin selepas log masuk

Model SQL处理 使用static修饰

<?php
namespace app\index\model;

use think\Model;
use think\Db;
/**
 * 使用静态方法 static 而不是 public 在controller里面不用new 直接用 会方便很多
 */
class Users extends Model
{   
    private static $instance;
    protected $defaultField = &#39;danli&#39;;
    private function __clone(){} //禁止被克隆
    /**
    * 单例
    */
    public static function getInstance()
    {
        if(!(self::$instance instanceof self)){
            self::$instance = new static();
        }
        return self::$instance;
    }
    /**
    * 添加一条数据
    */
    public static function insertOne($uid,$uname,$uage,$usex)
    {
        $inserttheone = self::getInstance()->execute("insert into users(u_id,u_name,u_age,u_sex) value(".$uid.",&#39;".$uname."&#39;,".$uage.",".$usex.")");
        if($inserttheone)
        {
            return true;
        }
        else{
            return false;
        }
    }
    /**
    * 删除一条数据
    */
    public static function deleteOne($uid)
    {
        $delone = self::getInstance()->execute("delete from users where u_id = ".$uid."");
        if($delone)
        {
            return true;
        }
        else{
            return false;
        }
    }
    /**
    *  修改一条数据
    */
    public static function updateOne($uid,$age)
    {
        $updateone = self::getInstance()->execute("update users set u_age = ".$age." where u_uid = ".$uid."");
        if($updateone)
        {
            return true;
        }
        else{
            return false;
        }
    }
    /**
    * 查询
    */
    public static function query($defaultField,$uid)
    {   
        if($defaultField == &#39;&#39; || empty($defaultField) || is_null($defaultField)){
            $defaultField = &#39;*&#39;;   
        }
        if($uid == &#39;&#39; || empty($uid) || is_null($uid)){
            $uid = &#39;&#39;;   
        }
        else{
            $uid = "where u_id = $uid";
        }
        return self::getInstance()->query("select $defaultField from users $uid");

    }
    /**
    * 批量修改
    */
    public static function batchUpdate($arr)
    {   
        foreach ($arr as $key => $value) {
            $updatearr = self::getInstance()->execute("update users set u_name = &#39;".$value[&#39;u_name&#39;]."&#39;,u_age = ".$value[&#39;u_age&#39;].",u_sex = ".$value[&#39;u_sex&#39;]." where u_uid = ".$uid."");
            if($updatearr)
            {
                return true;
            }
            else{
                return false;
            }
        }
    }
}
Salin selepas log masuk

四丶以上就是使用单例模式来处理model的一些SQL处理,在tp5中控制器表名model只要一一对应就可以拿来直接用,相对来讲还是比较方便

相关推荐:

Tp5项目修改数据库

Atas ialah kandungan terperinci TP5单例模式操作Model. 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
4 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)

Apakah yang dilakukan oleh mod Jangan Ganggu WeChat? Apakah yang dilakukan oleh mod Jangan Ganggu WeChat? Feb 23, 2024 pm 10:48 PM

Apakah maksud mod Jangan Ganggu WeChat Pada masa kini, dengan populariti telefon pintar dan perkembangan pesat Internet mudah alih, platform media sosial telah menjadi bahagian yang amat diperlukan dalam kehidupan seharian orang ramai. WeChat ialah salah satu platform media sosial paling popular di China, dan hampir semua orang mempunyai akaun WeChat. Kita boleh berkomunikasi dengan rakan, keluarga dan rakan sekerja dalam masa nyata melalui WeChat, berkongsi detik dalam hidup kita dan memahami situasi semasa satu sama lain. Namun begitu, dalam era ini, sudah pasti kita juga berdepan dengan masalah sarat maklumat dan kebocoran privasi terutamanya bagi mereka yang perlu fokus atau

Tutorial penggunaan PyCharm: membimbing anda secara terperinci untuk menjalankan operasi Tutorial penggunaan PyCharm: membimbing anda secara terperinci untuk menjalankan operasi Feb 26, 2024 pm 05:51 PM

PyCharm ialah persekitaran pembangunan bersepadu (IDE) Python yang sangat popular. Ia menyediakan pelbagai fungsi dan alatan untuk menjadikan pembangunan Python lebih cekap dan mudah. Artikel ini akan memperkenalkan anda kepada kaedah operasi asas PyCharm dan menyediakan contoh kod khusus untuk membantu pembaca memulakan dengan cepat dan menjadi mahir dalam mengendalikan alat tersebut. 1. Muat turun dan pasang PyCharm Pertama, kita perlu pergi ke laman web rasmi PyCharm (https://www.jetbrains.com/pyc

Apakah sudo dan mengapa ia penting? Apakah sudo dan mengapa ia penting? Feb 21, 2024 pm 07:01 PM

sudo (eksekusi superuser) ialah arahan utama dalam sistem Linux dan Unix yang membenarkan pengguna biasa menjalankan perintah tertentu dengan keistimewaan root. Fungsi sudo dicerminkan terutamanya dalam aspek berikut: Menyediakan kawalan kebenaran: sudo mencapai kawalan ketat ke atas sumber sistem dan operasi sensitif dengan membenarkan pengguna mendapatkan kebenaran superuser buat sementara waktu. Pengguna biasa hanya boleh mendapatkan keistimewaan sementara melalui sudo apabila diperlukan, dan tidak perlu log masuk sebagai pengguna super sepanjang masa. Keselamatan yang dipertingkatkan: Dengan menggunakan sudo, anda boleh mengelak daripada menggunakan akaun akar semasa operasi rutin. Menggunakan akaun akar untuk semua operasi boleh menyebabkan kerosakan sistem yang tidak dijangka, kerana sebarang operasi yang salah atau cuai akan mempunyai kebenaran penuh. dan

Mod Jangan Ganggu Tidak Berfungsi dalam iPhone: Betulkan Mod Jangan Ganggu Tidak Berfungsi dalam iPhone: Betulkan Apr 24, 2024 pm 04:50 PM

Malah menjawab panggilan dalam mod Jangan Ganggu boleh menjadi pengalaman yang sangat menjengkelkan. Seperti namanya, mod Jangan Ganggu mematikan semua pemberitahuan panggilan masuk dan makluman daripada e-mel, mesej, dsb. Anda boleh mengikuti set penyelesaian ini untuk membetulkannya. Betulkan 1 – Dayakan Mod Fokus Dayakan mod fokus pada telefon anda. Langkah 1 – Leret ke bawah dari atas untuk mengakses Pusat Kawalan. Langkah 2 – Seterusnya, dayakan “Mod Fokus” pada telefon anda. Mod Fokus mendayakan mod Jangan Ganggu pada telefon anda. Ia tidak akan menyebabkan sebarang makluman panggilan masuk muncul pada telefon anda. Betulkan 2 – Tukar Tetapan Mod Fokus Jika terdapat beberapa isu dalam tetapan mod fokus, anda harus membetulkannya. Langkah 1 – Buka tetingkap tetapan iPhone anda. Langkah 2 – Seterusnya, hidupkan tetapan mod Fokus

Langkah-langkah operasi dan langkah berjaga-jaga Deploy Linux Langkah-langkah operasi dan langkah berjaga-jaga Deploy Linux Mar 14, 2024 pm 03:03 PM

Langkah pengendalian dan langkah berjaga-jaga LinuxDeploy LinuxDeploy ialah alat berkuasa yang boleh membantu pengguna menggunakan pelbagai pengedaran Linux dengan pantas pada peranti Android, membolehkan pengguna mengalami sistem Linux yang lengkap pada peranti mudah alih mereka. Artikel ini akan memperkenalkan langkah pengendalian dan langkah berjaga-jaga LinuxDeploy secara terperinci dan memberikan contoh kod khusus untuk membantu pembaca menggunakan alat ini dengan lebih baik. Langkah-langkah operasi: Pasang LinuxDeploy: Pertama, pasang

Apa yang perlu dilakukan jika anda terlupa menekan F2 untuk kata laluan but win10 Apa yang perlu dilakukan jika anda terlupa menekan F2 untuk kata laluan but win10 Feb 28, 2024 am 08:31 AM

Mungkin ramai pengguna mempunyai beberapa komputer yang tidak digunakan di rumah, dan mereka telah lupa sepenuhnya kata laluan kuasa hidup kerana mereka tidak digunakan untuk masa yang lama, jadi mereka ingin tahu apa yang perlu dilakukan jika mereka terlupa kata laluan? Kemudian mari kita lihat bersama-sama. Apa yang perlu dilakukan jika anda terlupa menekan F2 untuk kata laluan boot win10 1. Tekan butang kuasa komputer, dan kemudian tekan F2 semasa but (jenama komputer yang berbeza mempunyai butang yang berbeza untuk memasuki BIOS). 2. Dalam antara muka bios, cari pilihan keselamatan (lokasi mungkin berbeza untuk jenama komputer yang berbeza). Biasanya dalam menu tetapan di bahagian atas. 3. Kemudian cari pilihan SupervisorPassword dan klik padanya. 4. Pada masa ini, pengguna boleh melihat kata laluannya, dan pada masa yang sama mencari Didayakan di sebelahnya dan menukarnya kepada Dis.

Perkongsian langkah operasi tangkapan skrin Huawei Mate60 Pro Perkongsian langkah operasi tangkapan skrin Huawei Mate60 Pro Mar 23, 2024 am 11:15 AM

Dengan populariti telefon pintar, fungsi tangkapan skrin telah menjadi salah satu kemahiran penting untuk kegunaan harian telefon bimbit. Sebagai salah satu telefon mudah alih utama Huawei, fungsi tangkapan skrin Huawei Mate60Pro secara semula jadi telah menarik banyak perhatian daripada pengguna. Hari ini, kami akan berkongsi langkah operasi tangkapan skrin telefon mudah alih Huawei Mate60Pro, supaya semua orang boleh mengambil tangkapan skrin dengan lebih mudah. Pertama sekali, telefon bimbit Huawei Mate60Pro menyediakan pelbagai kaedah tangkapan skrin, dan anda boleh memilih kaedah yang sesuai dengan anda mengikut tabiat peribadi anda. Berikut ialah pengenalan terperinci kepada beberapa pemintasan yang biasa digunakan:

Perlukah saya menutup komputer riba saya setiap kali? Perlukah saya menutup komputer riba saya setiap kali? Feb 19, 2024 pm 12:09 PM

Komputer riba Windows datang dengan pilihan hibernasi dan penutupan. Apabila anda meletakkan komputer riba anda ke dalam mod tidur, ia memasuki mod kuasa rendah dan anda boleh terus bekerja dalam apa jua cara anda meninggalkannya. Jika anda menutup komputer riba anda, anda perlu menutup semua program dan kerja anda dan mulakan semula. Jika anda ingin berehat dari komputer riba anda sepanjang hari, mod tidur atau mod hibernasi ialah pilihan yang baik. Bagaimana dengan menutup pintu? Perlukah saya menutup komputer riba saya setiap kali? Mari kita ketahui. Perlukah saya menutup komputer riba saya setiap kali? Mungkin idea yang baik untuk mematikan komputer riba anda untuk menjimatkan tenaga dan memanjangkan hayat peranti, terutamanya jika ia tidak digunakan untuk jangka masa yang panjang. Tetapi pada siang hari, adalah idea yang baik untuk meletakkan komputer riba anda ke dalam mod tidur untuk meneruskan tugas anda

See all articles