|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不过还好,PHP语言给出的语法错误很详细,只要稍微熟悉一点之后,看错误提示就能很容易找出错误所在的。PHP还有一个特别好用的调试功能,在PHP语句中,你可以随时用echo来输出结果。
面向对象编程(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办法,例如承继,重载,援用,串行化等等。充实调动各类办法并天真应用,就可以够使你的网站更公道和布局化,开辟和保护也更轻易。
我先解释一下我的学习思路。 |
|