
发表日期: 2021-04-26 15:30:02 浏览次数:101
泰兴小程序制作【泰兴企业邮箱】泰兴网站外包、泰兴微信商城开发、泰兴网店美工、泰兴淘宝设计
泰兴市位于江苏省中部、长江下游北岸。北纬31°58′12"~32°23′05",东经119°54′05"~120°21′56",是江苏省泰州市下辖市,是江苏省直管县三个试点之一,享有部分地级市职权。东接如皋市;南接靖江市;西濒长江,与扬中市、常州市新北区隔江相望;北邻泰州市姜堰区,东北与南通市海安市接壤;西北与泰州市高港区毗连。 [1-2]
泰兴置县于南唐升元元年(公元937年),寓意“国泰民安,百业兴旺”,有“教育之乡” [3] 、“银杏之乡” [4] 、“建筑之乡” [5] 、“提琴之乡” [6] 、“减速机之乡” [7] 之称。 [2]
2018年,泰兴市实现地区生产总值1040亿元。一般公共预算收入74.5亿元,增长18.1%,税占比84.1%,总量列全省县市第7位、增幅列第1位。财政管理工作连续两年获得国务院表彰奖励。固定资产投资增长14%,其中产业投资增长13%。实现社会消费品零售总额257亿元,增长7%。城乡居民人均可支配收入增长9.2%。全国县域经济基本竞争力排名前移至第29位。 [8-9]
泰兴属长江三角洲冲积平原,行政区划面积1172平方公里,泰兴东西最大直线距离为47.0千米,南北最大直线距离为43.5千米。2017年末户籍总人口118.56万人,比上年减少0.75万人。年末常住人口107.80万人。 [10] 2018年11月,入选中国工业百强县(市)。 [11] 2018年12月,入选全国县域经济综合竞争力100强、 [12] 投资潜力100强,中国最佳县级城市30强,2019全国营商环境百强县。2020年12月,社科院发布《全国县域经济综合竞争力100强》,泰兴排名第37 [13] 。
在添加并实现数据模型类Model_Event的类方法前,细心的读者可以发现,在前面调用的代码中,其实已经很好地给出了待实现的类方法的函数签名。这一细节,也很好地表明了为什么在意图导向编程下能更好的提高关注点。
// WeTime$ vim ./Fun/Model/Event.php
public function getSpaceList($allUids, $createTime, $perpage, $page) {
return $this->getORM()
->select('id, uid, title, content, createtime')
->where('uid', $allUids)
->where('createtime < ?', $createTime)
->where('tousers', '1')
->limit(($page - 1) * $perpage, $perpage)
->order('createtime DESC')
->fetchAll();
}复制代码最终获取日历事件列表的底层实现代码如上所示,并在调试模式下,可以看到对应的SQL语句为:
SELECT id, uid, title, content, createtime FROM wt_event WHERE (uid IN (2, 1)) AND (createtime < ?) AND (tousers = '1') ORDER BY createtime DESC LIMIT 0,5; -- '2017-05-29 59:59:59'复制代码
如果你觉得这时已经大功告成,那就错了,因为严谨的单元测试会告诉你,还缺少了用户的相关信息,例如用户头像。
那么,对于用户的相关信息,应该在哪里实现呢?又应该在哪里调用呢?实现的位置不容置疑,应该是在用户领域业务为Domain_User中,但调用的时机呢?很明显,这属于在在日历事件列表中聚合用户信息,这是属于根据不同的业务场景而组合的数据,因此应该在日历事件领域业务类中完成这一组装的过程。既然这样,需要在已经获得的日历事件列表中继续追加用户信息,添加新的代码后,代码看起来像是这样。
// WeTime$ vim ./Fun/Domain/Event.php
public function getSpaceList($userId, $createTime, $perpage = 20, $page = 1) {
... ...
$model = new Model_Event();
$list = $model->getSpaceList($allUids, $createTime, $perpage, $page);
$domainUser = new Domain_User();
$userList = $domainUser->getUserList($allUids);
foreach ($list as &$eventRef) {
$eventRef['user'] = array(
'avatar' => $userList[$eventRef['uid']]['avatar'],
);
}
return $list;
}复制代码细心品读这段代码,可以发现一些有趣的事情。首先,这里先是批量获取了全部的用户信息,再追加相应的用户数据。这种做法既不是每次重复查询数据库获取用户信息的粗暴方式,也不是在Model层进行关联查询却产生过度数据耦合及技术实现耦合的方式。其次,在添加用户信息时,采用的是对每个事件条目按需追加,如这时只追加了头像这一信息。这样是考虑到可共用的用户列表信息,很有可能会有后期添加一些扩展字段,但这些字段不一定是客户端所需要的。所以,通过先编写调用代码,可以迫使我们开发人员优先考虑需要什么,再去实现。
这里又是一条开发支线,但这条支线已经是“最后一公里”了。完成这条支线的功能开发,如无意外,我们就能交付查看日历事件列表这一接口服务了!
先来实现领域业务层获取用户列表的方法:
// WeTime$ vim ./Fun/Domain/User.php<?php/**
* 用户领域业务类
*/class Domain_User {
public function getUserList($allUids) {
$model = new Model_User();
return $model->getUserList($allUids);
}}复制代码再来实现对应的数据模型层的方法:
// WeTime$ vim ./Fun/Model/User.php<?php/**
* 用户数据模型类
*/class Model_User extends PhalApi_Model_NotORM {
public function getUserList($allUids) {
$rows = $this->getORM()
->select('id, avatar')
->where('id', $allUids)
->fetchAll();
$list = array();
foreach ($rows as $row) {
$list[$row['id']] = $row;
}
return $list;
}}
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878