PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库
单例模式
单例模式三大原则:
① 构造函数需要标记为非 public (防止外部使用 new 操作符创建对象),单例类不能在其他类中实例化,只能被自身实例化;
② 拥有一个保存类的实例的静态成员变量 $_instance
③ 拥有一个访问这个实例的公共的静态方法
单例模式(参见 PHP 单例模式代码片段):
<?php
/*
* 单例模式
*/
class DB{
static private $_instance;
private function __construct(){
} static public function getInstance(){
if(!self::$_instance instanceof self){
self::$_instance = new self();
}
return self::$_instance;
}
}
单例模式连接数据库:
<?php
/*
* 单例模式连接数据库
*/
class DB{
static private $_instance; //非public的类的实例的静态成员变量
static private $_connectSource; //连接数据库返回的资源句柄
private $_dbConfig = array(
'host'=>'127.0.0.1',
'username'=>'root',
'pwd'=>'',
'database'=>'chat'
); private function __construct(){ //非public 的构造函数
} static public function getInstance(){ //访问实例的公共静态方法
if(!self::$_instance instanceof self){
self::$_instance = new self();
}
return self::$_instance;
} public function connect(){
if(!self::$_connectSource){
//连接mysql服务
self::$_connectSource = mysql_connect($this->_dbConfig['host'],$this->_dbConfig['username'],$this->_dbConfig['pwd']);
if(!self::$_connectSource){
die('mysql connect error'.mysql_error());
}
//选择数据库
mysql_select_db($this->_dbConfig['database'],self::$_connectSource);
//设置字符集
mysql_query('set names "UTF8"',self::$_connectSource);
}
return self::$_connectSource; //返回资源
}
} $connect = DB::getInstance()->connect();
var_dump($connect); $sql = 'select * from messages';
$res = mysql_query($sql,$connect);
$num = mysql_num_rows($res);
var_dump($num);
页面输出:
resource(3, mysql link)
int
PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [1] 单例模式连接数据库的更多相关文章
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计
APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [4] 首页 APP 接口开发方案 ③ 定时读取缓存方式
用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_ ...
- 《疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践》学习笔记
<疯狂前端开发讲义jQuery+Angular+Bootstrap前端开发实践>学习笔记 二〇一九年二月十三日星期三2时28分54秒 前提:本书适合有初步HTML.CSS.JavaScri ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- OGG学习笔记02-单向复制配置实例
OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...
随机推荐
- 1.单件模式(Singleton Pattern)
意图:为了保证一个类仅有一个实例,并提供一个访问它的全局访问点. 1.简单实现(多线程有可能产生多个实例) public class CommonSigleton { /// <summary& ...
- Redis笔记(一)Redis简介
关于Redis Redis是一款开源的高性能键值对数据库,最初的作者是意大利的Salvatore Sanfilippo,他的github是 antirez ,Redis的源码同样托管在Git上:htt ...
- MVC @helper (转载)
转载地址:http://gaoling386.blog.163.com/blog/static/5404602420130595842894/ ASP.NET MVC 3支持一项名为“Razor”的新 ...
- C# 读取本地图片 转存到其他盘符
UpFileContent upfile = new UpFileContent(); upfile.StationImageName = "123.png"; FileStrea ...
- HDU 4513 吉哥系列故事——完美队形II manacher
吉哥系列故事——完美队形II Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希 ...
- sql经典习题及其答案(纠正错误版)
--网上有好多这套题的答案,但是经过我的验证,有很多都是错的,误人子弟--这是我自己纠正以后的版本 然后呢如果我写的还有不对的欢迎批评指正!--(1)查询2006年以后(包括2006年)的投稿情况,列 ...
- SQL经典短小代码收集
--SQL Server:Select TOP N * From TABLE Order By NewID() --开头到N条记录Select Top N * From 表--N到M条记录(要有主索引 ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(六)码农网
30. 用密码保护 GRUB 用密码保护你的 boot 引导程序这样你就可以在启动时获得额外的安全保障.同时你也可以在实物层面获得保护.通过在引导时给 GRUB 加锁防止任何无授权访问来保护你的服务器 ...
- 使用egypt+graphviz生成函数调用关系图示例
总结: make (-fdump-rtl-expand) 去除编译优化,比如-O3 egypt test.c.128r.expand >test.dot 可以手动打开dot文件去除一些孤立 ...
- Spring的qualifier标签
@Autowired是根据类型进行自动装配的.如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存 ...