• php面向对象 > PHP面向对象编程快速入门
  • PHP面向对象编程快速入门

    免费下载 下载该文档 文档格式:DOC   更新时间:2011-09-15   下载次数:0   点击次数:2

    PHP面向对象编程快速入门

    面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程 能力和规划好Web开发构架都是非常有意义的。下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和应用方法。 MU}gn~=b=  
    g^,Rl  
       我们通常在做一个有数据库后台的网站的时候,都会考虑到程序需要适用于不同的应用环境。和其他编程语言有所不同的是,在PHP中,操作数据库的是一系列 的具体功能函数(如果你不使用ODBC接口的话)。这样做虽然效率很高,但是封装却不够。如果有一个统一的数据库接口,那么我们就可以不对程序做任何修改 而适用于多种数据库,从而使程序的移植性和跨平台能力都大大提高。 nc7-qrZs  
    : 4p4y4'  
      在PHP中要完成OOP,需要进行对象封装,也就是编写类。我们可以通过生成一个新的SQL类实现对数据库的简单封装。例如: OMDr\n-:+  
    ­?@+wA-2|y  
    < ? Br3,r& /  
    class SQL qz6kOgr3I  
    { Lx 24f%  
    var $Driver; //实际操作的数据库驱动子类 h=0!
    h@rO1  
    var $connection; //共用的数据库连接变量 SO!Gt%#yg  
    function DriverRegister($d) i':Zu  
    { E.!8X$
    ]a  
    if($d!="") ^|/>Ziy  
    { v0kjB#?  
    $include_path = ini_get("include_path"); a5q S*  
    $DriverFile = $include_path."/".$d.".php"; ! TVxI}0  
    //驱动的存放路径必须在PHP.ini文件中设定的INCLUDE_PATH下 ,JoXYOpJ<  
    if( file_exists( $DriverFile)) //查找驱动是否存在 Awz0&E-W0  
    { &`:or cm ­  
    include($DriverFile); Z;W'Q
    5 xY  
    $this->Driver = new $d(); |3Nh4Dv  
    // 根据驱动名称生成相应的数据库驱动类 CkEHdd59  
    return true; d[(AC59t!o  
    } )#eM UF  
    } ~`
    vRvS  
    return false; //注册驱动失败 V+7 xx3|m  
    } =uF<mV0(  
    function Connect($host,$user,$passwd,$database)//连接数据库的函数 "/7L/l}j%t  
    { eipC_a >U  
    $this->Driver->host=$host; ge/$tTL  
    $this->Driver->user=$user; Y&o'\Zs  
    $this->Driver->passwd=$pas Zf>/N@d%=  
    swd; ­S]hhjU8  
    $this->Driver->database=$d _­5qhb"o  
    atabase; ?$kt]!b  
    $this->connection = $this->Driver->Connect(); 6;|);  
    } KO$z %  
    function Close()//关闭数据库函数 _{P4Kosj?  
    { B W8 //T  
    $this->Driver->close($this->connection); sh7)k61%!  
    } ^%L)N1ndl  
    function Query($queryStr)//数据库字符串查询函数 >
    1B( f  
    {
    jeC}  
    return $this->Driver->query($queryStr,$this->connection); NRJ6
    >DAY  
    } gGNVe.E_hm  
    function getRows($res)//查找行 Z.,Q
    mY-Y  
    { Y
    n=1oou  
    return $this->Driver->getRows($res); ezU`8tX  
    } '+7{:/C8  
    function getRowsNum($res)//取得行号 G9v? %9  
    { ­I(Hup(f  
    return $this->Driver-> getRowsNum ($res); kn~ZZ.=]  
    } [
    2 I<s  
    } =Ctxu-U  
    ? > 3!c$V~b|  
    -yp0~*V!  
       我们以操作MySQL数据库为例。我们写一个数据库驱动类MySQL,在该类中,我们把有关MySQL数据库操作的函数都做进一步的封装。把包含该类, 文件名为MySQL.php的文件放在PHP的系统 include_path下,就可以正常地使用了。注意编写数据库驱动文件时,文件名应和类名保持一致。 _l[McSbN­G  
    9=2YfVF$  
    < ? s= (N  
    Class MySQL X<eP^s&  
    { C&',9fkR  
    var $host; R%t]cNwi  
    var $user; Y#|!]'1  
    var $passwd; )
    L5N~cy  
    var $database; s"v oJ~  
    function MySQL() //利用构造函数实现变量初始化 %$ $a)  
    { vjA`-(  
    $host = ""; &){cgDF  
    $user = ""; N[^Le'l.~  
    $passwd = ""; 'nu
    \)
    ny  
    $database = ""; EAtNg5tO  
    } MgHSy u  
    function Connect() FEzkZE$ `  
    { Y(Sw%"  
    $conn = MySQL_connect($this->host, $this->user,$this->passwd) or 7v}r$LVO  
    die("Could not connect to $this->host"); A
    b)d]  
    MySQL_select_db($this->database,$conn) or UO|`aO _  
    die("Could not switch to database $this->database;"); #Flu)sEh  
    return $conn; 6'VB\S8,*  
    } 9zi!9^E  
    function Close($conn) LVKHUy:QS0  
    { 8=nWVTO
    4  
    MySQL_close($conn); 0}J8WC%#  
    } Jd
     
    hXnbX1slS  
    function Query($queryStr, $conn) x2fitpt$  
    { N?sJ
    V  
    $res =MySQL_query($queryStr, $conn) or S
    ?#VIz<;-  
    die("Could not query database"); s+jJ]%aY  
    return $res; 1Hvicube0e  
    } !# ,i>sp8k  
    function getRows($res) jFRh<:,  
    { :$gxgI  
    $rowno = 0; Kef27{|Mz  
    $rowno = MySQL_num_rows($res); |-z.NuoR  
    if($rowno>0) kT`v+#  
    {
    l%'![}d  
    for($row=0;$row<$rowno;$row++) @^5+mRj+  
    { bc\&dR  
    $rows[$row]=MySQL_fetch_row($res); LOXi7j_ 3  
    } ?5",tl6  
    return $rows; B@P_o3B83:  
    } f[7Lo\
    Dl9  
    } !l^)EoKN5G  
    function getRowsNum($res) jGW­W
    !dm.  
    { SNGl"(f  
    $rowno = 0; ? hju!oV:/  
    $rowno = mysql_num_rows($res); 4M#|\  
    return $rowno; @ xXeHaY  
    } =iZ@.PS6|8  
    } z|noUwT  
    ? > e^*x`
    WJ  
      同样我们要封装其他的“数据库驱动”到我们的SQL类中,只需要建立相应的类,并以同名命名驱动文件,放到PHP的include目录就可以了。 f6Er\[>>  
    T$3C{Ba  
      完成封装以后,就可以在PHP中按照OOP的思想来实现对数据库的编程了。 Nvspv[L  
    _1Iq}wF:  
    < ? Dg;s,;8H  
    Include(“SQL.php”); s)/q!#M  
    $sql = new SQL; //生成新的Sql对象
    YI'z4i  
    if($sql-> DriverRegister(“MySQL”)) //注册数据库驱动 ,NT  
    { AW9LU|6  
    $sql->Connect(“localhost”,”root”,””,”test”); m\[}9BH ~  
    $res=$sql->query(“select * from test”); //返回查询记录集 gq\S6h3/N  
    $rowsnum = $sql->getRowsNum($res); [LvM<Q
     
    if($rowsnum > 0) ER6~OHS\:O  
    { v?AUj
    "9  
    $rows = $sql->getRows($res); %>a9|i_o  
    foreach($rows as $row) //循环取出记录集内容 WG~rq
     
    { dz~kb[|ONR  
    foreach($row as $field){
    mr!ejWb1`  
    print $field;} w.3qR!dXW|  
    } MKuwWw9  
    } >[i <7u'we  
    $sql->Close(); LYV#hL Q  
    } E?CQ wWy  
    ? > ??LhN1[L/  
    )' #Uy  
      在实际应用中,我们还可以根据实际需求对各种对象类做进一步扩展。在PHP中,还提供了一系列复杂的OOP方法,例如继承,重载,引用,串行化等等。充分调动各种方法并灵活运用,就能够使你的网站更合理和结构化,开发和维护也更容易。

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • php内置对象  面向对象程序设计思想  面向对象编程的特点  什么是面向对象  java面向对象练习题  java面向对象题目  面向对象的思考过程  java面向对象课程设计  面向对象编程