利用面向对象的思想实现不同的角色查询同一个商品返回不同的数据信息

通常的做法 都是通过权限配置来实现,当然还有利用数据库做字段控制表的方式来管理返回数据。但是我今天要演示的是基于面向对象的处理思想实现。

 面向对象思想的设计思路是:不管你有多少角色进来查询,都有其共同要显示的字段,因此,我们利用父子类的思想来实现。就是抽离查询结果集的返回公共信息,然后各子类定义自己的特性字段。

先看下我的表结构

CREATE TABLE `goodsrole` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `price` decimal(10,2) NOT NULL,
  `stock` int(10) NOT NULL,
  `goods_desc` varchar(200) DEFAULT NULL,
  `goods_area` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

上面这个表是商品表 当然命名可能不太规范,但是这里咱们先忽略。。

数据库里面的数据截图

 

 

然后在看我定义的父子类

 

 

role为父类  role1  role2为子类。。。

 

然后就是商品查询类  代码比较简单,但是效果是实现了

接下来是客户端处理类

getDefaultProperties();
$fields = implode(',',array_keys($pros));
$goods = new goods();
$data = $goods->get_goods_info_by_fields($id,$fields);

echo "
";print_r($data);

查看运行效果

利用面向对象的思想实现不同的角色查询同一个商品返回不同的数据信息_第1张图片

 

结论:我们只要切换不同的角色类型 就能得到不同字段的查询结果,一旦你要新增角色,你不用动核心代码,只要按照需求增加不同的子类就能实现,这种方法充分体现了解耦思想和面向对象思想,方便功能的拓展。个人以为值得学习。本人代码能力有限,代码里面的命名可能不规范,对这个代码演示有建议的人欢迎留言一起讨论 学习进步。

你可能感兴趣的:(php)