php-单例模式实现mysql实例化对象

1.回顾

上篇学习了php一个实例:简单的文章管理系统

2.学习点

这篇将使用单例模式封装一个实现mysql的实例化对象类

3.实现类

3.1 配置文件 config.php

定义常量:主机地址,用户名,密码,数据库名称。

<span style="font-size:18px;"><?php

define('HOST','localhost');
define('USERNAME', 'root');
define('PASSWORD', '');
define('DATABASE', 'test');
</span>

3.2 实现 mysqlUtil.php

通过单例模式实例化 mysql_connect() 对象和选择数据库,设置编码集!

<span style="font-size:18px;"><?php
// 单例模式 连接数据库
// 构造函数标记为非public
// 拥有保存类实例的静态成员
// 拥有访问这个实例的公告方法
require_once 'config.php';
class Db {

	// 保存实例的静态成员
	private static $_instance;
	private static $_conn;
	// 构成函数
	private function __construct() {
	}

	/**
	 * 公共入口方法
	 */
	static public function getInstance() {
		// 检测不到,重新实例化 对象
		if (! (self::$_instance instanceof self)) {
			self::$_instance = new self ();
		}
		return self::$_instance;
	}

	/**
	 * 连接方法
	 *
	 * @return resource
	 */
	public function connect() {
		if (! self::$_conn) {
			self::$_conn = mysql_connect ( HOST, USERNAME, PASSWORD );
			//self::$_conn=mysql_connect('localhost','root','');
			if (! self::$_conn) {
				die ( '连接失败  ' . mysql_error () );
			}
			// 选择数据库
			mysql_select_db (DATABASE, self::$_conn );
			// 设置字符集
			mysql_query ( "set names utf8", self::$_conn );
		}
		return self::$_conn;
	}
}

?></span>

3.3 调用和使用

<span style="font-size:18px;">//调用
$con=Db::getInstance()->connect();

//查询语句
$sql='select * from user_info';
//执行,返回结果集
$result=mysql_query($sql,$con);
//添加的新数组
$arr3=array();
while ($row=mysql_fetch_row($result)){
	array_push($arr3,$row);
}</span>

4.总结

使用的时候,需要配置 config.php 文件和调用的时候,不要忘了 调用 connect()方法!

5.demo下载

http://download.csdn.net/detail/lablenet/8995925

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 18:33:07

php-单例模式实现mysql实例化对象的相关文章

lua面向对象实现(实例化对象、继承、多态、多继承、单例模式)

lua面向对象实现: 一个类就像是一个创建对象的模具.有些面向对象语言提供了类的概念,在这些语言中每个对象都是某个特定类的实例.lua则没有类的概念,每个对象只能自定义行为和形态.不过,要在lua中模拟类也并不困难. lua中,面向对象是用元表这个机制来实现. 首先,一般来说一个表和它的元表是不同的个体(不属于同一个表),在创建新的表时,不会自动创建元表. setmetatable函数:设置元表 setmetatable( 表1 , 表2 )  将表2挂接为表1的元表,并且返回经过挂接后的表1

C++只在栈或堆上实例化对象

C++如何让类对象只能在堆(栈)上分配空间 一般情况下写一个类都是可以采用new在堆上分配空间,或直接采用 类名+对象名 的方式在栈上分配空间.但有时候,如果想让一个类只能在栈上或者堆上分配空间,又该怎么实现呢? 下面分别来介绍如何定义只能在栈上或堆上实例化的类. 注:1.静态实例化对象 如 A a;的步骤为:先由编译器为对象在栈空间分配内存,移动栈顶指针,挪出适当的空间,然后在这个空间上调用构造函数形成一个对象,在对象使用完之后,调用析构函数回收内存,栈顶指针减一.2.动态实例化对象:new操

java反射机制(一)—— 利用反射机制实例化对象

一.Java有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载.探知.使用编译期间完全未知的classes.换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体.或对其fields设值.或唤起其methods.(度娘文库是这么说的) 二.这篇文章主要介绍一下通过反射机制去实例化一个类的对象,然后调用其方法.本文主要介绍两种方式,第一种就是通过构造函数来实例化,第二种就是通过Cl

java反射-反射实例化对象-反射获得构造方法-反射获得普通方法-获得属性

链接:https://www.zhihu.com/question/24304289/answer/38218810来源:知乎著作权归作者所有,转载请联系作者获得授权. Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象 第一步:获得对象,构造方法,普通方法,属性 Object obj = cls.newInstance() Constructor<?> cons = cls.get

c++中实例化对象的大小(转)

今天随手写了一个类,用sizeof()测试实例化类对象的大小时遇到了一些问题. 一般来说,对象大小由数据成员大小决定,不包含成员函数的大小. 在网上找了一篇很详细的例子,我遇到的问题为实例三情形,涉及到编译器的优化. 之所以写这篇<C++类的实例化对象的大小之sizeof()>,是因为在参加笔试的时候遇到如下这么一道题,当时感觉就是这个一个坑,但,我还是义无反顾的跳了下去,因为存在知识点盲区啊.现,总结一下,你不知道的C++类的实例化对象的大小之sizeof(). class D{public

[转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如果实例化的是一个空模型 例如 $Demo = new Model(); 那么它等价于

ThinkPHP中实例化对象M()和D()的区别,select和find的区别

原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法.通俗一点说:M实例化参数是数据库的表名.D实例化的是你自己在Model文件夹下面建立的模型文件 例如:$user = new UserModel(); 等价于$user = D('user'); 如

【PHP面向对象(OOP)编程入门教程】5.如何实例化对象?

我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了. 当定义好类后,我们使用new关键字来生成一个对象. $对象名称 = new 类名称(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php class Person {     // 下面是人的成员属性     var $name; // 人的名字     var $sex; // 人的性别     var $

通过构造函数实例化对象

1 /** 2 * Created by hunt on 2017/6/27. 3 * 测试的实体类 4 * @Data 编译后会自动生成set.get.无惨构造.equals.canEqual.hashCode.toString方法 5 */ 6 @Data 7 public class Person { 8 private String name; 9 private int age; 10 public Person(String name){ 11 this.name = name; 1