首页 / 更多教程 / 面向对象编程_数据库操作类
面向对象编程_数据库操作类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了面向对象编程_数据库操作类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3639字,纯文字阅读大概需要6分钟。
内容图文
目录
1、mysqldb_class.php
<?php
class MySQLDB
{
//数据库连接信息
private $dbConfig=array(
'host'=>'localhost',
'port'=>'3306',
'user'=>'',
'pwd'=>'',
'charset'=>'utf8',
'dbname'=>''
);
private $link;
/**
* 初始化属性
* @param array $params 数据库连接信息
*/
private function initAttr($params)
{ //初始化属性,使用array_marge()函数合并两个数组
$this->dbConfig=array_marge($this->dbConfig,$params);
}
/**
* 连接数据库
*/
private function connectServer()
{
$host=$this->dbConfig['host'];
$port=$this->dbConfig['port'];
$user=$this->dbConfig['user'];
$pwd=$this->dbConfig['pwd'];
//连接数据库服务器
if($link=mysql_connect("$host;$port",$user,$pwd)){
$this->link=$link;
}else{
die('数据库连接失败。'.mysql_error());
}
}
/**
* 设定字符集
*/
private function setCharset()
{
$sql=" set names {$this->dbConfig['charset']}";
$this->query($sql);
}
/**
* 选择默认数据库
*/
private function selectDefaultDb()
{
//判断$this->dbConfig['dbname']是否为空。为空表示不需要选择数据库。
if($this->dbConfig['dbname']==''){
return;
}
$sql="use `{$this->dbConfig['dbname']}`";
$this->query($sql);
}
/**
* 构造方法
* @param array $params 数据库连接信息
*/
public function __construct($params=array())
{
//初始化属性
$this->initAttr($params);
//连接数据库
$this->connectServer();
//设定字符集
$this->setCharset();
//选择默认数据库
$this->selectDefaultDb();
}
/**
* 执行SQL语句,获取结果集
* @param string $sql 待执行的SQL
* @return resource
*/
public function query($sql)
{
if($result=mysql_query($sql,$this->link)){
//执行成功
return $result;
}else{
//执行失败
echo 'SQL执行失败:<br>';
echo '错误的SQL为:'.$sql.'<br>';
echo '错误的代码为:'.mysql_errno($this->link).'<br>';
echo '错误的信息为:'.mysql_error($this->link).'<br>';
die;
}
}
/**
* 查询单条记录
* @param string $sql
* @return array 一维数组
*/
public function fetchRow($sql){
if($result=$this->query($sql)){
$row=mysql_fetch_array($result,MYSQL_ASSOC);
return $row;
}else{
return false;
}
}
/**
* 处理多条数据
* @param string $sql
* @return array 二维数组
*/
public function fetchAll($sql){
if($result=$this->query($sql)){
$rows=array();
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$rows[]=$row;
}
mysql_free_result($result);
return $rows;
}else{
return false;
}
}
/**
* mysql转义字符串
* @param $data 待转义的字符串
* @return string
*/
public function escapeString($data){
return mysql_real_escape_string($data,$this->link);
}
}
2、单例模式
通过单例模式。可以做到一个类只能被实例化一次。
(1)在定义数据库操作类的成员属性的时候,添加一个私有静态成员。
//单例对象引用
private static $instance;
(2)私有化构造方法。防止类在外部被实例化,但可以在类内实例化
//私有化构造方法。防止类在外部被实例化,但可以在类内实例化
private function __construct($params=array())
{
......
}
(3)添加一个静态成员方法,作为获取单例对象的公共接口,通过类访问这个静态方法来实例化对象。
/*
* 获得单例对象的公共接口方法
* @param array $params 数据库连接信息
* @return object 单例的对象
*/
public static function getInstance($params=array())
{
//判断是否没有实例化过
if(!self::$instance instanceof self){
//实例化并保存
self::$instance=new self($params);
}
//返回对象
return self::$instance;
}
(4)把克隆方法声明为私有的
/**
* 私有克隆
*/
private function __clone(){
}
当在类的外部执行“clone$对象名”时,会自动调用该对象的__clone()方法,复制这个对象。因此我们需要把__clone()方法私有化,这样在外部就无法调用该方法。
注意:__clone()、__construct()、__destruct()方法都是类中默认存在的方法,即使在类文件中不进行声明,这些方法依然存在,只不过是空方法。
3、对象的克隆
对象复制可以通过clone关键字来完成,示例代码:$copy_of_object=clone $object;
当对象被复制后,PHP会对对象的所有属性执行复制操作。当复制完成时,如果定义了__clone()方法,则新创建的对象(复制生成的对象)中的__clone()方法会被调用,可用于修改属性的值。
内容总结
以上是互联网集市为您收集整理的面向对象编程_数据库操作类全部内容,希望文章能够帮你解决面向对象编程_数据库操作类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。