php mysql 单例_php 简单的 单例模式

php单例模式简单说明

使用注意事项:

1.使用时不能用反射模式创建单例,否则会实例化一个新的对象

2.使用懒单例模式时注意线程安全问题

3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)

/**

* Created by PhpStorm.

* auther: sgj

* Date: 2019/9/5

* Time: 20:58

*/

/*

1.单例模式只能通过自身进行实例化

2.拥有一个保存对象实例的静态成员变量

3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )

4.通过instanceof操作符可以检测到类是否已经实例化了

*/

class single

{

/**

* 私有构造函数

* single constructor.

*/

private function __construct()

{

}

/**

* 私有的构造函数防止克隆

*/

private function __clone()

{

// TODO: Implement __clone() method.

}

/*存储实例的静态方法*/

private static $interion;

/**

* 通过这个来获取实例

* @return single

*/

public function getInstance(){

if (empty($interion)){

self::$interion=new single();

}

return self::$interion;

}

}

1.单例模式只能通过自身进行实例化

2.拥有一个保存对象实例的静态成员变量

3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )

4.通过instanceof操作符可以检测到类是否已经实例化了

单例模式的优点:

一个php进程只会实例化出一个单例 ,减少了内存占用减少资源占用。比如说你的调整了php的进程数,随着php进程数的增加需要注意到mysql连接数的数量。因为php mysql采用了单例模式,你的PHP进程数就是mysql的连接数。(此时也需要注意你的mysql连接数必须大于

你php的进程数,否则就等待mysql 释放连接 导致等待从而导致多米诺似的系统崩溃)

单例模式的缺点:

没有抽象层难以扩展 不适合变化性较强的实例单例类的职责过重,在一定程度上违背了“单一职责原则”。

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要PHP进阶架构师>>>视频、面试文档免费获取​docs.qq.com2547dabdcd1101902b4b00ccf2d41dbb.png

或者关注咱们下面的知乎专栏PHP架构师圈子​zhuanlan.zhihu.com6cb7f70d51a23d614ee5c5c3f1a5c259.png

来源:https://www.cnblogs.com/sgj123/p/11470097.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?php defined('ACC')||exit('Access Denied'); // 封装mysql操作类,包括连接功能,及查询功能. class mysql extends absdb{   protected static $ins = null;   protected $host;  // 主机名   protected $user;  // 用户名   protected $passwd; // 密码   protected $db;      // 数据库名   protected $port;    // 端口   protected $conn = null;   // 在内部操作,获得一个对象   public static function getIns() {     if(self::$ins === null) {       self::$ins = new self();     }     $conf = conf::getIns();     self::$ins->host = $conf->host;     self::$ins->user = $conf->user;     self::$ins->passwd = $conf->pwd;     self::$ins->db = $conf->db;     self::$ins->port = $conf->port;     self::$ins->connect();     self::$ins->select_db();     self::$ins->setChar();     return self::$ins;   }   // 不让外部做new操作,   protected function __construct() {   }   // 连接数据库   public function connect() {     $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port);     if(!$this->conn) {       $error = new Exception('数据库连不上',9);       throw $error;     }   }   // 发送sql查询   public function query($sql) {     $rs = mysql_query($sql,$this->conn);     if(!$rs) {       log::write($sql);     }     return $rs;   }这是一个单例模式实现mysqlPHP类,需要的朋友可以下载使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值