小女巫 发表于 2015-2-16 00:25:46

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办法,例如承继,重载,援用,串行化等等。充实调动各类办法并天真应用,就可以够使你的网站更公道和布局化,开辟和保护也更轻易。


我先解释一下我的学习思路。

admin 发表于 2015-2-16 01:55:23

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

山那边是海 发表于 2015-2-25 03:48:52

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

因胸联盟 发表于 2015-2-26 21:20:20

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

愤怒的大鸟 发表于 2015-3-7 13:44:10

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

冷月葬花魂 发表于 2015-3-10 18:05:26

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

兰色精灵 发表于 2015-3-12 21:20:49

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

深爱那片海 发表于 2015-3-15 07:28:46

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

海妖 发表于 2015-3-17 06:11:33

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

金色的骷髅 发表于 2015-3-18 08:32:15

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

若相依 发表于 2015-3-25 14:11:04

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

活着的死人 发表于 2015-3-31 06:04:43

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

简单生活 发表于 2015-4-8 18:16:16

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

小魔女 发表于 2015-4-9 01:56:37

爱上php,他也会爱上你。

小女巫 发表于 2015-4-26 00:52:31

Ps:以上纯属原创,如有雷同,纯属巧合

若天明 发表于 2015-6-12 06:42:05

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

乐观 发表于 2015-7-10 20:00:49

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

飘灵儿 发表于 2015-7-12 09:56:14

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

谁可相欹 发表于 2015-7-14 01:39:23

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

飘飘悠悠 发表于 2015-7-16 17:52:03

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
页: [1] 2
查看完整版本: PHP网页编程之PHP面向对象编程的疾速入门