PHP面向对象编程快速入门


Posted in PHP onDecember 14, 2006

【摘 要】面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良 好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和 规划好Web开发构架都是非常有意义的。

面向对象编程(OOP)是我们编程的一项基本技能,PHP4对 OOP提供了良好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP 编程 能力和规划好Web开发构架都是非常有意义的。下面我们就通过实例来说明 使用PHP的OOP进行编程的实际意义和应用方法。

我们通常在做一个有数据库后台的网站的时候,都会考虑到程序需 要适用于不同的应用环境。和其他编程语言有所不同的是,在PHP中,操作数据 库的是一系 列的具体功能函数(如果你不使用ODBC接口的话)。这样做虽然效 率很高,但是封装却不够。如果有一个统一的数据库接口,那么我们就可以不对 程序做任何修 改而适用于多种数据库,从而使程序的移植性和跨平台能力都大 大提高。

在PHP中要完成OOP,需要进行 对象封装,也就是编写类。我们可以通过生成一个新的SQL类实现对数据库的简 单封装。例如: 
 PHP:  

<?  
class SQL  
{  
var $Driver; //实际操作的数据库驱动子类  
var $connection; //共用的数据库连接变量  function DriverRegister($d)  
{  
if($d!="")  
{  
$include_path = ini_get("include_path");  
$DriverFile = $include_path."/".$d.".php";  
//驱动的存放路径必须在PHP.ini文件中设定的 INCLUDE_PATH下  
if( file_exists( $DriverFile)) //查找驱动是否存在  
{  
include($DriverFile);  
$this->Driver = new $d();  
// 根据驱动名称生成相应的数据库 驱动类  
return true;  
}  
}  
return false; //注册驱动失败  
}  
function Connect($host,$user,$passwd,$database)//连接数据库的函数  
{  
$this->Driver->host=$host;  
$this->Driver->user=$user;  
$this->Driver->passwd=$passwd;  
$this->Driver->database=$database;  
$this->connection = $this->Driver->Connect();  
}  
function Close()//关闭数据库函数  
{  
$this->Driver->close($this->connection);  
}  
function Query($queryStr)//数据库字符串查询函数  
{  
return $this->Driver->query($queryStr,$this->connection);  
}  
function getRows($res)//查找行  
{  
return $this->Driver->getRows($res);  
}  
function getRowsNum($res)//取得行号  
{  
return $this->Driver-> getRowsNum ($res);  
}  
}  
?> 
 

我们以操作MySQL数 据库为例。我们写一个数据库驱动类MySQL,在该类中,我们把有关MySQL数据库 操作的函数都做进一步的封装。把包含该 类,文件名为MySQL.php的文件放在 PHP的系统 include_path下,就可以正常地使用了。注意编写数据库驱动文件时 ,文件名应和类名保持一致。
PHP:  

<?  
Class MySQL  
{  
var $host;  
var $user;  
var $passwd;  
var $database;  
function MySQL() //利用构造函数实现变量初始化  
{  
$host = "";  
$user = "";  
$passwd = "";  
$database = "";  
}  function Connect()  
{  
$conn = MySQL_connect($this->host, $this->user,$this->passwd) or  
die("Could not con nect to $ this->host");  
MySQL_select_db($this->database,$conn) or  
die("Could not swi tch to database $ this->database;");  
return $conn;  
}  
function Close($conn)  
{  
MySQL_close($conn);  
}  
function Query($queryStr, $conn)  
{  
$res =MySQL_query($queryStr, $conn) or  
die("Could not que ry database");  
return $res;  
}  
function getRows($res)  
{  
$rowno = 0;  
$rowno = MySQL_num_rows($res);  
if($rowno>0)  
{  
for( $row=0;$row<$rowno;$row++)  
{  
$rows[$row]=MySQL_fetch_row($res);  
}  
return $rows;  
}  
}  
function getRowsNum($res)  
{  
$rowno = 0;  
$rowno = mysql_num_rows($res);  
return $rowno;  
}  
}  
?> 

同样我们要封装其他的“数据库驱动”到我们 的SQL类中,只需要建立相应的类,并以同名命名驱动文件,放到PHP的include 目录就可以了。

完成封装以后,就可以 在PHP中按照OOP的思想来实现对数据库的编程了。

PHP:  

<?  
Include(“SQL.php”);  
$sql = new < font color="#0000bb">SQL; //生成新的Sql对象  
if($sql-> DriverRegister(“MySQL”& lt;font color="#007700">)) //注册数据库驱动  
{  
$sql->Connect(“localhost”,”root”&l t;font color="#007700">,””,”test”&l t;font color="#007700">);  
$res=$sql->query(“select & lt;font color="#007700">* from test”); //返回查询记录集  
$rowsnum = $sql->getRowsNum($res);  
if($rowsnum > 0)  
{  
$rows = $sql->getRows($res);  
foreach($rows as $row) //循环取出记录集内容  
{  
foreach($row as $field){  
print $field;}  
}  
}  
$sql->Close();  
}  
?> 
 

在实际应用中,我们还可以根据实际需求对各种对象类做进一步扩 展。在PHP中,还提供了一系列复杂的OOP方法,例如继承,重载,引用,串行化 等等。充分调动各种方法并灵活运用,就能够使你的网站更合理和结构化,开发 和维护也更容易。

PHP 相关文章推荐
php 短链接算法收集与分析
Dec 30 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
php-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP实现微信申请退款功能
Oct 01 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
Apr 15 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 #PHP
谈谈新手如何学习PHP
Dec 14 #PHP
php基础知识:类与对象(5) static
Dec 13 #PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 #PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 #PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 #PHP
php基础知识:类与对象(1)
Dec 13 #PHP
You might like
php json_encode值中大括号与花括号区别
2013/09/30 PHP
浅析PHP文件下载原理
2014/12/25 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
Python字符串替换实例分析
2015/05/11 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
Python实现搜索算法的实例代码
2020/01/02 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
自荐信怎么写呢?
2013/12/09 职场文书
八一建军节活动方案
2014/02/10 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
蓝颜请假条
2014/04/11 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
技术入股合作协议书
2016/03/21 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
Python中字符串对象语法分享
2022/02/24 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
Nginx限流和黑名单配置
2022/05/20 Servers