PHP面向对象编程快速入门

面向对象编程。那样做尽管效用相当高,可是封装并非常不够。固然有三个合併的数据库接口,那么大家就足以不对程序做其余改造而适用于三种数据库,进而使程序的移植性和跨平台本事都大大提升。
在PHP中要到位OOP,须要开展对象封装,也正是编写类。大家能够因此转移三个新的SQL类完成对数据库的简要封装。举例:
? classSQL { var$Driver;//实操的数据库驱动子类
var$connection;//共用的数据库连接变量 functionDriverRegister($dState of Qatar {
if($d!=””) { $include_path=ini_get(“include_path”);
$DriverFile=$include_path.”/”.$d.”.php”;
//驱动的存放路径必需在PHP.ini文件中设定的INCLUDE_PATH下
if(file_exists($DriverFile卡塔尔国State of Qatar//查找驱动是还是不是存在 { include($DriverFileState of Qatar;
$this-Driver=new$d(卡塔尔; //根据驱动名称改换对应的数据库驱动类 returntrue; }
} returnfalse;//注册驱动战败 }
functionConnect($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(卡塔尔; }
functionClose(卡塔尔国//关闭数据库函数 { $this-Driver-close($this-connection卡塔尔;
} functionQuery($queryStrState of Qatar//数据库字符串查询函数 {
return$this-Driver-query($queryStr,$this-connection卡塔尔国; }
functiongetRows($res卡塔尔(قطر‎//查找行 { return$this-Driver-getRows($res卡塔尔; }
functiongetRowsNum($res卡塔尔国//获得行号 {
return$this-Driver-getRowsNum($res卡塔尔(قطر‎; } } ?
大家以操作MySQL数据库为例。大家写二个数据库驱动类MySQL,在这里类中,大家把有关MySQL数据库操作的函数都做进一层的卷入。把带有该类,文件名叫MySQL.php的文书放在PHP的类别include_path下,就能够符合规律地选择了。注意编写数据库驱动文件时,文件名应和类名保持一致。
? ClassMySQL { var$host; var$user; var$passwd; var$database;
functionMySQL(卡塔尔//利用布局函数达成变量伊始化 { $host=””; $user=””;
$passwd=””; $database=””; } functionConnect(卡塔尔 {
$conn=MySQL_connect($this-host,$this-user,$this-passwd)or
die(“Couldnotconnectto$this-host”);
MySQL_select_db($this-database,$conn)or
die(“Couldnotswitchtodatabase$this-database;”); return$conn; }
functionClose($conn) { MySQL_close($conn); }
functionQuery($queryStr,$conn) { $res=MySQL_query($queryStr,$conn)or
die(“Couldnotquerydatabase”); return$res; } functiongetRows($res) {
$rowno=0; $rowno=MySQL_num_rows($res); if($rowno0) {
for($row=0;$row$rowno;$row++) { $rows[$row]=MySQL_fetch_row($res); }
return$rows; } } functiongetRowsNum($res) { $rowno=0;
$rowno=mysql_num_rows($res卡塔尔(قطر‎; return$rowno; } } ?
相近大家要卷入其余的“数据库驱动”到大家的SQL类中,只须求建设构造相应的类,并以同名命名驱动文件,放到PHP的include目录就足以了。
完结封装现在,就可以在PHP中依照OOP的合计来落实对数据库的编制程序了。 ?
Include(“SQL.php”卡塔尔(قطر‎; $sql=newSQL;//生成新的Sql对象
if($sql-DriverRegister(“MySQL”卡塔尔国State of Qatar//注册数据库驱动 {
$sql-Connect(“localhost”,”root”,””,”test”卡塔尔国;
$res=$sql-query(“select*fromtest”卡塔尔;//再次回到查询记录集
$rowsnum=$sql-getRowsNum($res卡塔尔国; if($rowsnum0卡塔尔 {
$rows=$sql-getRows($res卡塔尔国; foreach($rowsas$row卡塔尔国//循环抽出记录集内容 {
foreach($rowas$田野同志卡塔尔{ print$田野先生;} } } $sql-Close(State of Qatar; } ?
在其实使用中,大家还足以依靠实际供给对各类对象类做进一层扩充。在PHP中,还提供了一层层复杂的OOP方法,比如世襲,重载,引用,串行化等等。足够调动各样艺术并灵活运用,就可以知道使您的网站更客观和构造化,开垦和体贴也更易于。

平铺直叙在做三个有数据库后台的网址的时候,都会设想到程序需求适用于分裂的应用碰到。和别的编制程序语言有
所不一致的是,在PHP中,操作数据库的是一多种的实际职能函数(倘使您不行使ODBC接口的话)。那样做即便功效非常高,但是封装而不是常不够。即便有一个集合的
数据库接口,那么我们就可以不对程序做别的改变而适用于三种数据库,进而使程序的移植性和跨平台技能都大大进步。在PHP中要到位OOP,必要进行对象封
装,也正是编写类。我们能够透过更换八个新的SQL类实现对数据库的简易封装。比方:
< ?
class SQL
{

面向对象编制程序是大家编制程序的一项基本手艺,PHP4对OOP提供了独具特殊的优越条件的匡助。怎么样利用OOP的思辨来开展PHP的高级编制程序,对于增加PHP编制程序工夫和陈设好Web开采构架都是可怜有含义的。下边大家就经超过实际例来验证使用PHP的OOP实行编制程序的实际意义和接纳措施。
大家常常在做叁个有数据库后台的网址的时候,都会虚构到程序供给适用于不一致的应用情况。和其余编程语言有所不一样的是,在PHP中,操作数据库的是一多种的具体效果函数。那样做即使功能相当高,然则封装并非常不够。如若有多个集结的数据库接口,那么大家就可以不对程序做别的订正而适用于各个数据库,进而使程序的移植性和跨平台才干都大大升高。
在PHP中要完结OOP,需求进行对象封装,也正是编写类。我们得以经过退换一个新的SQL类达成对数据库的简短封装。举例:Driver=new$d(卡塔尔;//依据驱动名称改变对应的数据库驱动类returntrue;}}returnfalse;//注册驱动失利}functionConnect($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//关闭数据库函数{$this->Driver->close;}functionQuery//数据库字符串查询函数{return$this->Driver->query($queryStr,$this->connectionState of Qatar;}functiongetRows//查找行{return$this->Driver->getRows;}functiongetRowsNum//获得行号{return$this->Driver->getRowsNum;}}?>
我们以操作MySQL数据库为例。大家写二个数据库驱动类MySQL,在这里类中,我们把关于MySQL数据库操作的函数都做越来越包裹。把带有该类,文件名称叫MySQL.php的文件放在PHP的类别include_path下,就能够符合规律地利用了。注意编写数据库驱动文件时,文件名应和类名保持一致。host,$this->user,$this->passwd卡塔尔ordie(“Couldnotconnectto$this->host”卡塔尔(قطر‎;MySQL_select_db($this->database,$conn)ordie(“Couldnotswitchtodatabase$this->database;”);return$conn;}functionClose{MySQL_close;}functionQuery{$res=MySQL_queryordie(“Couldnotquerydatabase”);return$res;}functiongetRows{$rowno=0;$rowno=MySQL_num_rows{for($row=0;$row
相符大家要卷入其他的“数据库驱动”到我们的SQL类中,只需求建构相应的类,并以同名命名驱动文件,放到PHP的include目录就足以了。
完结封装以往,就能够在PHP中根据OOP的沉思来兑现对数据库的编程了。<
?Include;$sql=newSQL;//生成新的Sql对象if($sql->DriverRegister//注册数据库驱动{$sql->Connect(“localhost”,”root”,””,”test”卡塔尔;$res=$sql->query;//重回查询记录集$rowsnum=$sql->getRowsNum{$rows=$sql->getRows;foreach//循环收取记录集内容{foreach{print$田野先生;}}}$sql->Close(卡塔尔国;}?
>
在骨子里运用中,我们还足以依靠实际须求对各样对象类做特别扩充。在PHP中,还提供了一密密层层复杂的OOP方法,例如世袭,重载,引用,串行化等等。丰裕调动各样办法并灵活运用,就可见使您的网址更客观和结构化,开拓和有限协理也更易于。

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( $DriverFileState of QatarState of Qatar //查找驱动是不是留存

{

include($DriverFile);

$this->Driver = new $d();

// 依照驱动名称更换对应的数据库驱动类

return true;

}

}

return false; //注册驱动退步

}

function Connect($host,$user,$passwd,$databaseState of Qatar//连接数据库的函数

{

$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”State of Qatar; //重临查询记录集

$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方法,比如世袭,重载,引用,串行化等等。充裕调动种种方法并灵活运用,就可以预知使您的网址更客观和构造化,开辟和护卫也更易于。

发表评论

电子邮件地址不会被公开。 必填项已用*标注