当前位置: 网站首页>小程序开发>网站优化

泰兴微信公众号开发【泰兴网络推广】泰兴建站、泰兴网站维护、泰兴网页制作、泰兴微信小程序代运营公司

发表日期: 2021-04-26 15:26:56 浏览次数:183

泰兴微信公众号开发【泰兴网络推广】泰兴建站、泰兴网站维护、泰兴网页制作、泰兴微信小程序代运营公司

泰兴市位于江苏省中部、长江下游北岸。北纬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]  。

   // Step 2. 执行
        $rs = PhalApi_Helper_TestRunner::go($url, $params);

        // Step 3. 验证
        $this->assertGreaterThan(0, $rs['id']);
    }复制代码

在上面测试用例中,模拟用户ID为1,即Aevit用户,发布一个日历事件,并期望发布后返回的事件ID大于0,表示新增数据库表纪录成功后返回的自增ID应大于0。这时,运行单元测试,可以看到这时是失败的。

WeTime$ phpunit ./Fun/Tests/Api/Api_Event_Test.php... ...1) PhpUnderControl_ApiEvent_Test::testPostFailed asserting that null is greater than 0.... ...复制代码

在意图导向下完成具体功能开发,让测试通过

在明确了接口服务的需求,并且有失败的单元测试作为指明,要实现此日历事件发布功能就很简单了。关键的是如何把合理地组织代码,把代码放在最合适的位置上。

首先,先在接口类Api_Event中补充发布日历事件所需要的参数的规则配置。这时,可结合前面日历事件数据库表wt_event的表结构进行相应的配置,只需要稍微转换一下即可。

// WeTime$ vim ./Fun/Api/Event.phpclass Api_Event extends PhalApi_Api {

    public function getRules() {
        return array(
            'post' => array(
                'title' => array('name' => 'title', 'min' => 1, 'max' => 50, 'require' => true, 'desc' => '标题'),
                'content' => array('name' => 'content', 'min' => 1, 'max' => 200, 'require' => true, 'desc' => '内容'),
                'location' => array('name' => 'location', 'max' => 50, 'desc' => '位
置信息'),
                'createTime' => array('name' => 'createtime', 'type' => 'date', 'desc' => '发布时间'),
                'tousers' => array('name' => 'tousers', 'type' => 'enum', 'range' => array('0', '1', '2'), 'default' => '1', 'desc' => '事件的权限(0:私有;1:公开;2:共享)'),
            ),
        );
    }
    ... ...复制代码

接着,实现接口类的调用功能。Api_Event接口类在发布日历事件时,主要需要进行的工作有:检测用户是否已登录,收集验证通过和解析的事件信息,最后调用日历事件领域类进行发布。以下是对应的实现代码。

// WeTime$ vim ./Fun/Api/Event.php
    public function post() {
        if ($this->userId <= 0) {
            throw new PhalApi_Exception_InternalServerError('用户未登录');
        }

        $newEvent = array(
            'uid'           => $this->userId,
            'title'         => $this->title,
            'content'       => $this->content,
            'location'      => $this->location,
            'createtime'    => $this->createTime,
            'tousers'       => $this->tousers,
        );

        $domain = new Domain_Event();
        $id = $domain->post($newEvent);

        return array('id' => $id);
    }复制代码

上面有一个初学者很容易犯的错误,就是在需要进行检测用户登录态的场景中,并没有严格进行检测。如上面只是简单地判断用户ID是否大于0,而没有验证其真实性,更好的做法是进行会话判断。关于会话验证这块,暂时不做过多的介绍,以免分散日历事件模块的开发。

再次执行单元测试,会提示类Domain_Event未找到,这意味着要补充日历事件领域业务类。此领域业务类主要是完善日历事件的发面信息,如补充默认的状态值和发布时间,让事件信息更齐全。最终会调用数据模型类进行具体的数据持久化操作。

// WeTime$ vim ./Fun/Domain/Event.php<?php/**
 * 日历事件领域业务类
 */class Domain_Event {

    public function post($newEvent) {
        $newEvent['state'] = '1';
        if (empty($newEvent['createtime'])) {
            $newEvent['createtime'] = date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']);
        }

        $model = new Model_Event();
        $id = $model->insert($newEvent);

        return $id;
    }}复制代码

请注意,在实现接口服务时,为了更快速完成代码的编写,初学者更容易产生一些临时、相对不符合规范的代码。例如这里对于state字段,使用了魔法字符串“'1'”(之所以是字符串类型,是因为wt_event表的state字段为枚举类型,不能用整型),虽然暂时知道1表示事件未完成,即激活状态,但一段时间后其他开发人员甚至原作者再来阅读这行代码时,就难以判断这个1为何物了。但继续功能开发,关于代码的重构,后面会专门讲到。

再次执行单元测试,会提示类Model_Event未找到。此时,可再添加与日历事件表wt_event的数据业务类。这个类暂时的实现很简单,只需要继承于PhalApi_Model_NotORM父类即可。

// WeTime$ vim ./Fun/Model/Event.php<?php/**
 * 日历事件数据模型类
 */class Model_Event extends PhalApi_Model_NotORM {}复制代码

添加Model类后,如果提示数据库连接失败,则应该检测数据库配置文件./Config/dbs.php的连接信息是否正确。如果提示数据库表不存在,则应该检测数据库表前缀是否设置为“wt_”,以及数据库表wt_event是否已创建。

// WeTime$ vim ./Config/dbs.phpreturn array(
    'servers' => array(
        'db_wetime' => array(                         //调整服务器标记
            'host'      => 'localhost', 
            'name'      => 'wetime',                  //数据库名字为“wetime”
            'user'      => 'root', 
            'password'  => '',    
            'port'      => '3306',    
            'charset'   => 'UTF8',               
        ),
    ),

    'tables' => array(
        '__default__' => array(
            'prefix' => 'wt_',                        //统一表前缀为“wt_”
            'key' => 'id',
            'map' => array(
                array('db' => 'db_wetime'),           //更改为对应的服务器标记
            ),
        ),
    ),);

c51c866ffa1ab3457f2021e8bbdbcc1.jpg


泰兴微信公众号开发泰兴网络推广泰兴建站、泰兴网站维护、泰兴网页制作、泰兴微信小程序代运营公司

400-111-6878
服务热线
顶部

备案号: 苏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