简明现代魔法 -> PHP服务器脚本 -> PHP 面向对象实例:获取数据库用户数据

PHP 面向对象实例:获取数据库用户数据

2010-04-22

我们使用面向过程的方式和面向对象的方式分别写几个程序,理解面向对象编程带来的优势。

数据库使用mysql 数据库, 数据库结构和数据如下图所示。

先写一个数据库配置文件如下:

db_config.php

<?
// 数据库配置文件, db_config.php
$db_server = "localhost";
$db_user = "root";
$db_pwd = "123";
$db_name = "nowamgic";
?>

我们先写一个纯粹面向过程的方式来读取数据库中的用户信息。

viewuser_mysql.php

<?php
// viewuser_mysql.php
require_once("db_config.php"); //包含配置文件.
$sql = "select * from e_user where username='Jack' "; 

$conn  = mysql_pconnect($db_server, $db_user, $db_pwd);//建立mysql连接
$my_db = mysql_select_db($db_name,$conn);//选择数据库
$result = mysql_query($sql, $conn); // 执行查询语句
$userInfo = mysql_fetch_array($result); //返回查询结果到数组
mysql_close($conn); //关闭数据库连接

$username = $userInfo["username"]; //将数据从数组取出
$userpsw = $userInfo["userpsw"];
$userage = $userInfo["userage"];
$usergrade = $userInfo["usergrade"];

echo "your name is ".$username."<br>";  //输出数据
echo "your pass word is ".$userpsw."<br>" ;
echo "your age is ".$userage."<br>" ;
echo "your grade is ".$usergrade."<br>" ;
?>

这个思维模式我们太熟悉不过了。

  1. 读取配置文件中的数据库参数。
  2. 建立数据库连接。
  3. 选择数据库。
  4. 执行sql语句。
  5. 将数据返回给数组。
  6. 将每个数据内容取出。
  7. 将信息显示。

现在我们写一个面向对象的取数据库信息的内容。

class_user.php

<?
// class_user.php
class UserInfo{
	private $userName;  //属性,用户名
	private $userPSW ;  //属性,用户密码
	private $userAge ;  //属性,用户年龄
	private $userGrade ; //属性,用户级别
	private $userInfo; //存储数据库返回信息的数组变量.

	public function __construct($name){
		require_once("db_config.php"); //包含配置信息.
		$sql = "select * from e_user where username='$name' "; //书写sql
		$conn  = mysql_pconnect($db_server, $db_user, $db_pwd);//建立mysql连接
		$my_db = mysql_select_db($db_name,$conn);//选择数据库
		$result = mysql_query($sql, $conn); // 执行查询语句
		$this->userInfo = mysql_fetch_array($result); //返回查询结果到数组
		mysql_close($conn); //关闭数据库连接
		$this->getInfo(); //调用传递信息的方法.
	}
	// 获取信息传递给属性的方法
	private function getInfo(){
		$this->userName = $this->userInfo["username"];
		$this->userPSW = $this->userInfo["userpsw"];
		$this->userAge = $this->userInfo["userage"];
		$this->userGrade = $this->userInfo["usergrade"];
	}
	
	//返回每个属性的public 方法.
	public function getUserName(){
		return $this->userName;
	}
	
	public function getUserPSW(){
		return $this->userPSW;
	}
	
	public function getUserAge(){
		return $this->userAge;				
	}
	
	public function getUserGrade(){
		return $this->userGrade;
	}
}
?>

写class好像麻烦了些,但优点是结构清晰、扩展、重用和维护方便。

使用这个类非常复合我们看世界的眼光。

现在我们再做一次上帝,follow me。

一个典型的面向对象的案例。

大象放进冰箱里需要几步?

  1. 打开冰箱门。
  2. 大象放进去。
  3. 关上冰箱门。

显示用户Tom的信息需要几步?

  1. 创建 Tom 出来。
  2. 让这个Tom告诉我们关于他的信息内容。
  3. 显示这些信息。

viewuser.php

<? //viewuser.php
require_once("class_user.php");

$user = new UserInfo("Tom"); //创建一个user对象.

$username = $user->getUserName(); //分别调用方法取得数据
$userpsw = $user->getUserPSW();
$userage = $user->getUserAge();
$usergrade = $user->getUserGrade();

echo "your name is ".$username."<br>";  //输出数据
echo "your password is ".$userpsw."<br>" ;
echo "your age is ".$userage."<br>" ;
echo "your grade is ".$usergrade."<br>" ;

?>

Tom这个对象是如何创建的?创建时候做了什么?从那个服务器读取的?

从那个数据库读取的?从那个表单读取的?Tom的信息是如何读取的?

这些问题,在这里我们不需要再考虑。写刚才那个user类的时候,已经考虑过了。

使用这个对象,就像使用家里的冰箱和微波炉一样方便、自然。

把Tom换成换成jack试试?

那现在,你愿意使用流水账一样的方式写代码,还是更自然的面向对象呢?

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们