面向对象编程(OOP)是我们编程的一项基本技能,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<$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的思想来实现对数据库的编程了。  
<?

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面向对象编程快速入门的更多相关文章

  1. JQuery--JQuery面向对象编程快速入门-插件开发

    JQuery源码片段分析 (function(window){ /** * jQuery是一个函数 是一个对象 是一个构造器函数 */ var jQuery = function( selector, ...

  2. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...

  3. COM编程快速入门

    COM编程快速入门 COM编程快速入门 http://www.vckbase.com/index.php/wv/1642   COM是一种跨应用和语言共享二进制代码的方法.与C++不同,它提倡源代码重 ...

  4. Haskell 函数式编程快速入门【草】

    什么是函数式编程 用常规编程语言中的函数指针.委托和Lambda表达式等概念来帮助理解(其实函数式编程就是Lambda演算延伸而来的编程范式). 函数式编程中函数可以被非常容易的定义和传递. Hask ...

  5. 【PHP】PHP面向对象编程--phpOOP入门

     PHP从入门到精通 之PHP的面相对象编程 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序 ...

  6. python笔记 面向对象编程从入门到高级

    目录: 一.概念 二.方法    2.1组合 2.2继承 2.3多态 2.4封装 2.5归一化设计 三.面向对象高级   3.1   反射(自省) 3.2   内置方法__getatter__, __ ...

  7. Scala编程快速入门系列(一)

    目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Sca ...

  8. Java核心编程快速入门

    Java核心编程部分的基础学习内容就不一一介绍了,本文的重点是JAVA中相对复杂的一些概念,主体内容如下图所示. 反射reflect是理解Java语言工作原理的基础,Java编译器首先需要将我们编写的 ...

  9. Maya API编程快速入门

    一.Maya API编程简介 Autodesk® Maya® is an open product. This means that anyone outside of Autodesk can ch ...

随机推荐

  1. web前端安全相关

    burpsuite Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTTP 消 ...

  2. laravel实现第三方登录(qq登录)

    首先composer安装依赖: composer require socialiteproviders/qq 注册服务提供者(同时注释掉原有的Socialite提供者): 'providers' =& ...

  3. Thinking in Java——笔记(21)

    Concurrency However, becoming adept at concurrent programming theory and techniques is a step up fro ...

  4. [POJ] 2239 Selecting Courses(二分图最大匹配)

    题目地址:http://poj.org/problem?id=2239 Li Ming大学选课,每天12节课,每周7天,每种同样的课可能有多节分布在不同天的不同节.问Li Ming最多可以选多少节课. ...

  5. cf B. Permutation

    #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ]; ...

  6. 这样就算会了PHP么?-7

    循环之类的例子 <script language="javascript"> function calculate(a, b) { return a * b; } do ...

  7. 功率和dB的关系

    功率和dB的关系应该如下: 1.dB的引入是为了把乘除关系变换为加减,便于工程中的运算. 2.[dB] = 10lg(输出功率W/输入功率W).如:输入功率为1W而输出功率为1000W,则系统的增益为 ...

  8. BZOJ2768: [JLOI2010]冠军调查

    2768: [JLOI2010]冠军调查 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 484  Solved: 332[Submit][Status ...

  9. tyvj1038忠诚

    描述 Description 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是由于一些人的挑拨, ...

  10. MVC分部试图传参数

      @Html.Partial("_NavMenuPage", new ViewDataDictionary { { "proimshowId",imshowI ...