仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2722|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP面向对象编程的疾速入门

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:25:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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


我先解释一下我的学习思路。
admin 该用户已被删除
沙发
发表于 2015-2-16 01:55:23 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
山那边是海 该用户已被删除
板凳
发表于 2015-2-25 03:48:52 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
因胸联盟 该用户已被删除
地板
发表于 2015-2-26 21:20:20 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-3-7 13:44:10 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-10 18:05:26 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
兰色精灵 该用户已被删除
7#
发表于 2015-3-12 21:20:49 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
深爱那片海 该用户已被删除
8#
发表于 2015-3-15 07:28:46 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
海妖 该用户已被删除
9#
发表于 2015-3-17 06:11:33 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
金色的骷髅 该用户已被删除
10#
发表于 2015-3-18 08:32:15 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
若相依 该用户已被删除
11#
发表于 2015-3-25 14:11:04 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
活着的死人 该用户已被删除
12#
发表于 2015-3-31 06:04:43 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
简单生活 该用户已被删除
13#
发表于 2015-4-8 18:16:16 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
小魔女 该用户已被删除
14#
发表于 2015-4-9 01:56:37 | 只看该作者
爱上php,他也会爱上你。
小女巫 该用户已被删除
15#
 楼主| 发表于 2015-4-26 00:52:31 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
若天明 该用户已被删除
16#
发表于 2015-6-12 06:42:05 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
乐观 该用户已被删除
17#
发表于 2015-7-10 20:00:49 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
飘灵儿 该用户已被删除
18#
发表于 2015-7-12 09:56:14 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
谁可相欹 该用户已被删除
19#
发表于 2015-7-14 01:39:23 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
飘飘悠悠 该用户已被删除
20#
发表于 2015-7-16 17:52:03 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 09:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表