PHP网页编程之PHP面向对象编程的疾速入门
不过还好,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办法,例如承继,重载,援用,串行化等等。充实调动各类办法并天真应用,就可以够使你的网站更公道和布局化,开辟和保护也更轻易。
我先解释一下我的学习思路。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 爱上php,他也会爱上你。 Ps:以上纯属原创,如有雷同,纯属巧合 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
页:
[1]
2