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

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

数据库使用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试试?

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

转载于:https://my.oschina.net/kisscucci/blog/14476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值