PHP面向对象之旅:获取用户数据

体验面向对象和面向过程的优缺点
服务器君一共花费了272.391 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

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

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

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

延伸阅读

此文章所在专题列表如下:

  1. PHP面向对象之旅:类和对象
  2. PHP面向对象之旅:类的属性
  3. PHP面向对象之旅:类的方法
  4. PHP面向对象之旅:对象的比较
  5. PHP面向对象之旅:构造函数
  6. PHP面向对象之旅:类的继承
  7. PHP面向对象之旅:访问控制
  8. PHP面向对象之旅:方法覆盖
  9. PHP面向对象之旅:this关键字
  10. PHP面向对象之旅:parent::关键字
  11. PHP面向对象之旅:再谈重载
  12. PHP面向对象之旅:获取用户数据
  13. PHP面向对象之旅:用户权限管理类
  14. PHP面向对象之旅:static变量与方法
  15. PHP面向对象之旅:单例模式
  16. PHP面向对象之旅:final类和方法
  17. PHP面向对象之旅:PHP中的常量
  18. PHP面向对象之旅:抽象类
  19. PHP面向对象之旅:抽象方法
  20. PHP面向对象之旅:抽象类继承抽象类
  21. PHP面向对象之旅:静态抽象方法
  22. PHP面向对象之旅:模板模式
  23. PHP面向对象之旅:接口与抽象方法
  24. PHP面向对象之旅:接口的实现
  25. PHP面向对象之旅:接口的继承
  26. PHP面向对象之旅:类型提示
  27. PHP面向对象之旅:PHP的多态
  28. PHP面向对象之旅:instanceof运算符
  29. PHP面向对象之旅:接口与组合模拟多继承
  30. PHP面向对象之旅:一个接口实例
  31. PHP面向对象之旅:简单工厂模式

本文地址:http://www.nowamagic.net/librarys/veda/detail/1093,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1093

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《编程珠玑(第2版)》 Jon Bentley (作者), 黄倩 (译者), 钱丽艳 (译者)

《编程珠玑(第2版)》是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。

更多计算机宝库...