请教实现方式

浏览:8243 发布日期:2019/12/16 分类:ThinkPHP6专区
用户注册成功后,自动+100积分
发表文章+5积分
评论+1积分public function register($data){
    // 注册,创建用户
    $user = User::create($data);
    
    // 增加积分
    addScore($user['id'], 100);
}

public function publish($data, $userId){
    // 发表文章
    Article::create($data);
    
    // 增加积分
    addScore($userId, 5);
}

public function comment($data, $userId){
    // 评论
    Comment::create($data);
    
    // 增加积分
    addScore($userId, 1);
}
像这类的操作,如果在注册/发文/评论的代码后面,直接添加向数据库插入积分表的代码,是可以实现,但感觉不是最佳实践,
想请教,在实际生产中,是如何实现的呢?
是TP6中的事件吗?


如之后要追加其他需求,如发邮件消息通知,
每个函数里又要追加发邮件的代码,如:public function register($data){
    // 注册,创建用户
    $user = User::create($data);
    
    // 增加积分
    addScore($user['id'], 100);

    // 发邮件
    Email::send("内容");
}

public function publish($data, $userId){
    // 发表文章
    Article::create($data);
    
    // 增加积分
    addScore($userId, 5);

    // 发邮件
    Email::send("内容");
}

public function comment($data, $userId){
    // 评论
    Comment::create($data);
    
    // 增加积分
    addScore($userId, 1);

    // 发邮件
    Email::send("内容");
}
这样有几十个操作的话,就要复制粘贴几十次。
如果还要再记录日志Log::info("内容");
就再在每个操作函数后面,追加几十次 Log::info("内容");
感觉生产上应该不是这样做的
最佳答案
评论( 相关
后面还有条评论,点击查看>>