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

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

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

< ?

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=$pas

swd;

$this->Driver->database=$d

atabase;

$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下,就可以正常地使用了。注意编写数据库驱动文件时,文件名应和类名保持一致。

< ?

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 connect to $this->host");

MySQL_select_db($this->database,$conn) or

die("Could not switch 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 query database");

return $res;

}

function getRows($res)

{

$rowno = 0;

$rowno = MySQL_num_rows($res);

if($rowno>0)

{

for($row=0;$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的思想来实现对数据库的编程了。

Include(“SQL.php”);

$sql = new SQL; //生成新的Sql对象

if($sql-> DriverRegister(“MySQL”)) //注册数据库驱动

{

$sql->Connect(“localhost”,”root”,””,”test”);

$res=$sql->query(“select * 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面向对象编程快速入门相关推荐

  1. 零基础编程入门python视频-Python编程零基础小白快速入门完整全系列精品课

    1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...

  2. 【编程不良人】快速入门Spring学习笔记08---事务属性、Spring整合Structs2框架(SM)、Spring整合Mybatis+Struts2(SSM)、Spring注解、SSM注解式开发

    1. 事务属性 1.1 事务传播属性 配套视频:[编程不良人]快速入门Spring,SpringBoot.SpringCloud学不好完全是因为Spring没有掌握!_哔哩哔哩_bilibili # ...

  3. 【编程不良人】快速入门SpringBoot学习笔记06---RestFul、异常处理、CORS跨域、Jasypt加密

    1. RestFul 配套视频:[编程不良人]2021年SpringBoot最新最全教程_哔哩哔哩_bilibili 1.1 引言 REST全称是(Resources) Representationa ...

  4. 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

    点击上方"正运动小助手",随时关注新动态! 运动控制器ZHMI组态编程简介一  今天我们来学习一下,运动控制器的ZHMI组态编程简介.本文主要从产品概述.控制器连接触摸屏使用.HM ...

  5. python快速入门【五】---- 面向对象编程、python类

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  6. pthon_函数式编程与面向对象编程的比较

    函数式编程作为结构化编程的一种,正在受到越来越多的重视.工程中不在只是面向对象编程,更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题. 什么是函数式编程?在维基百科中给出了详细的定义,函数式 ...

  7. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  8. 函数式编程与面向对象编程的优劣

    函数式编程作为结构化编程的一种,正在受到越来越多的重视.工程中不在只是面向对象编程,更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题. 什么是函数式编程?在维基百科中给出了详细的定义,函数式 ...

  9. 函数式编程与面向对象编程的比较

    函数式编程作为结构化编程的一种,正在受到越来越多的重视.工程中不在只是面向对象编程,更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题. 什么是函数式编程?在维基百科中给出了详细的定义,函数式 ...

  10. 面向对象 编程及面向对象三大属性:封装 继承 多态

    面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构. ...

最新文章

  1. python 记录日志到日志服务器_Python日志模块的使用与思考:服务器程序将每日日志写入每日日志文件,logging,及,把,每天,到,当天,中...
  2. python操作sqlserver如何判断删除的数据不存在_Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法...
  3. websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理
  4. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
  5. BZOJ4504. K个串(主席树+优先队列)
  6. J - Fill (UVA - 10603)
  7. IPv6下网络编程实例
  8. 利用xlwt、xlrd搜索excel表格内容并复制出需要的那一行内容
  9. Python语言编写有趣练习题!
  10. anguarjs 图片预览_第865期【软件】最新图片排版神器 轻松打造完美排版!
  11. 【经典书】机器学习导论(附PDF)
  12. 【裴礼文数学分析】例1.1.1
  13. 移动应用接入网页QQ登录
  14. 第10章 vim程序编辑器
  15. 数学建模中各种评价类模型的优点和缺点总结
  16. 韩立春21日工作内容
  17. HTML5基础与Meta http-equiv属性详解
  18. Python飞机大战(完整版)
  19. Java基础学习(2)---Java基础语法
  20. python项目实例-python简单项目实例

热门文章

  1. (十)DeepFaceLab:预包装的DIY深度伪造替代品
  2. Python生成器和类
  3. 微软开源深度学习优化库 DeepSpeed,可训练 1000 亿参数的模型
  4. 甲骨文谷歌继续打官司:美最高法院同意复审 Java API 版权诉讼案
  5. 为什么真正的神经元学得更快
  6. 我的世界java版如何装mod_Minecraft如何安装Mod?Minecraft添加Mod的方法
  7. af_netlink_Linux Netlink通信机制详解(上)
  8. aix查看oracle用户密码,AIX详细查看用户/进程使用内存
  9. pyqt 实现控件移除_pyqt5:删除树控件(QTreeWidget)的子节点/根节点
  10. 鸿蒙系统速度和ios,鸿蒙系统到底和苹果安卓有什么区别