博主信息
月光下,遗忘黑暗
博文
41
粉丝
1
评论
0
访问量
5718
积分:0
P豆:83

php之单例模式连接数据库

2021年05月08日 22:07:58阅读数:209博客 / 月光下,遗忘黑暗

代码块

<?php/** * PHP语言是一种解释型的脚本语言,这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存,这和asp.net、Java等编译型是不同的,比如在Java中单例会一直存在于整个应用程序的生命周期里,变量是跨页面级的,真正可以做到这个实例在应用程序生命周期中的唯一性。然而在PHP中,所有的变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空,这样似乎PHP单例模式就没有什么意义了 * */ //PHP单例模式只是针对单次页面级请求时,出现多个应用场景并需要共享同一对象资源时是非常有意义的。/** * 面向对象编程三大特性: * 1. 封装 可见性  php中使用3种类型的可见性 : private(私有), protected(保护),public(公共) * 封装一个程序元素, 把它设为private,仅在本类中可见,还可以把它设为protected,允许本类及其子类访问该属性; 要访问封装的对象, 必须提供公有的可见性. 想要作为一个真正有用的类, 必须至少提供一些方法是可见的(即使只是构造函数) *  *  * 2. 继承 inheritance * 一个类扩展另一个类,前者会拥有后者的所有属性和方法. * php oop具有单继承的特点 -> 带来程序的高耦合性:如果程序通过深层次继承绑定到具体类,即使对父类做简单的修改,也会对子类带来严重的破坏 -> 解决办法: 1. 为了保证类之间的松绑定,通常会继承抽象类,而且是浅继承,即只有一层子类. 2. 引入trait结构 *  *  * 3. 多态 polymorphism  多态只有在oop上下文中讨论才有意义,多态真正价值在于,可以调用有相同接口的对象完成不同的工作.   基于一个公共接口, 在一个给定的程序结构中做出修改或增补时, 可以放心递请求或使用接口方法而不必担心程序会崩溃  一个名字多个实现 *  *  * 接口通常允许开发人员创建松绑定的对象和类,php接口允许储存常量,实现接口的类都可以使用接口中储存的常量 */ //单例模式连接数据库  应用程序与数据库交互 interface iDbBase {    //  数据库操作  curd     static function insert($db);    static function select($db,$where=[]);    static function delete($db,$where=[]);    static function update($db,$data,$where);    static function doConnect($dsn,$username,$password);    // return $this;实现链式调用 } //使用单例模式连接数据库 abstract class aDb implements iDbBase {     //创建类的唯一实例 唯一对象     private static $instance;//保存返回的pdo连接对象     //private关键字 阻止此类在外部进行实例化     private function __construct()     {     }     //private关键字阻止此类在外部进行克隆     private function __clone()     {     }     //只能由类的自身 来进行实例化      static function doConnect($dsn,$username,$password){        //判断$instance是否是aDb类的对象        if(is_null(self::$instance))         {            // echo 'aaaa';            //实例化本类, 传入连接参数,             self::$instance = new PDO($dsn,$username,$password);        }        return self::$instance;    } } //客户端代码// $config = [//     'type'=> $type ?? 'mysql',//     'host'=> $host ?? 'localhost',//     'dbname'=> $dbname ?? 'news',//     'username'=> $username ?? 'root',//     'password'=> $password ?? 'zhoujielun521'// ];// $dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);// $username = $config['username'];// $password = $config['password'];// // aDb::doConnect($dsn,$username,$password);// for ($i=0; $i < 10; $i++) { //     aDb::doConnect($dsn,$username,$password);// }//工作类class Db extends aDb{     //  数据库操作  curd      static function insert($db)     {        return $db->query('insert into `admins`(`username`,`password`,`truename`,`gid`,`add_time`) value("asd","fdsa","dsadsas",2,4213) ')->fetchAll(PDO::FETCH_ASSOC);     }     static function select($db,$where=[])     {        return $db->query('SELECT * FROM `iuser` LIMIT 3')->fetchAll(PDO::FETCH_ASSOC);     }     static function delete($db,$where=[])     {     }     static function update($db,$data,$where)     {     }}//客户端代码$config = [    'type'=> $type ?? 'mysql',    'host'=> $host ?? 'localhost',    'dbname'=> $dbname ?? 'video',    'username'=> $username ?? 'root',    'password'=> $password ?? 'root'];$dsn = sprintf('%s:host=%s;dbname=%s',$config['type'],$config['host'],$config['dbname']);$username = $config['username'];$password = $config['password'];//获取pdo连接对象$db = Db::doConnect($dsn,$username,$password);echo '<pre>';print_r(Db::insert($db,));

效果

批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:$pdo->query()方法一般用来执行select sql语句, 返回pdoStatement对象(结果集); 对于insert delete update语句, 一般使用$pdo->exec($sql);返回受影响的行数.

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • phpmysql的三种方:1、原生方;2、通过mysqli扩展;3、通过pdo扩展
    php在实际开发过程中,经常需要,随着php版本的更新,目前默认开启mysql的两种方莫过于mysqli和pdo,本文就带大家一起来看一看。
    PHP中我们经常需要前对的操作一般使用mysqli的,但是随着PDO的优势逐渐显现,PDO的成为主流,本文就带大家一起来看一看在使用PDO后,如何利用query
    PHP中我们经常需要,对进行增、删、改、查,前对的操作一般使用mysqli的,但是随着PDO的优势逐渐显现,PDO的成为主流,本文就带大家一起来看一看,利用PDO后返回的
    php中可使用mysqli_close()函来关闭mysql,语法格“mysqli_close(connection);”。​
    php关闭的命令是“mysqli_close()”。
    php中需要经常对进行,mysqli是php的一种方,本文就带大家一起来看一看,mysqli_num_rows 方法。
    php mysql删除的方法:首先创建一个PHP文件;然后;最后通过执行“DROP DATABASE xxx”语句删除即可。
    php mysql教程栏目介绍PHPMySql方法,PHP中自带面向过程的,一般会用到以下几个常用的方法。
    php打印错误的方法:首先创建一个PHP文件;然后;最后通过“echo mysql_error();”打印错误信息即可。
    php删除的方法:首先创建一个PHP文件;然后通过mysql_connect函;最后通过执行语句“DROP DATABASE test_db”来删除即可。
    删除php的方法:首先创建一个PHP文件;然后通过“mysql_connect”;最后使用SQL命令传递给mysql_query执行删除一个即可。
    php关闭的方法:可以利用mysqli_close()函来关闭先前打开的
    php中需要经常对进行,mysqli是php的一种方,我们有时候会需要查询中表的字段,本文就带大家一起来看一看,mysqli_num_fields() 方法。
    php删除表的方法:首先创建一个PHP文件;然后mysql;最后通过“DROP TABLE runoob_tbl”语句删除MySQL表即可。
    phpmysql的函是mysqli_connect(),该函可以打开一个到MySQL服务器的新的,语法格“mysqli_connect(主机名,用户名,密码,,[port],[
    phpmysql并查询的方法:首先创建PHP文件;然后通过用户名密码;最后通过查询语句“select* from goods”进行查询即可。
    php中需要经常对进行,mysqli是php的一种方,在对进行操作后,如何获取受影响的记录,本文就带大家一起来看一看mysqli_affected_rows() 方法。
    关系是关系型的主要特点。查询是关系中最主要的查询,主要包括内、外等。通过运算符可以实现多个表查询。
    php无法mssql的解决办法:1、修改身份验证;2、修改并确定账号密码;3、开启账号访问的权限。