• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

一种高性能对象信息绑定方案

工作技术 admin 8个月前 (03-28) 261次浏览 0个评论

假设需要在A对象信息里绑定B、C、D的信息

//A类
class A {

  /**
    * @param $aIds
    * @param $params
    *      with_b_info 获取b信息
    *      with_c_info 获取c信息
    *      with_d_info 获取d信息
    * @return array
    */
  public function getMulliAInfo($aIds, $params = []) {
    //获取A的数据(mc包一层)
    $list = $mc->getMulti($aIds); //从mc取数据
    if ($list === false) {
        $list = $db->select(['id' => $aIds]); //从db取数据
        $mc->setMulti($aIds, $list); //写入mc
    }

    //补充其他数据
    if (!empty($params['with_b_info'])) {
        $list = $this->_mergeBInfo($list);
    }
    if (!empty($params['with_c_info'])) {
        $list = $this->_mergeCInfo($list);
    }
    if (!empty($params['with_d_info'])) {
        $list = $this->_mergeDInfo($list);
    }

    return $list;
  }


  //绑定B信息
  private function _mergeBInfo($list)
  {
      $bIds = array_column($list, 'b_id');
      $bList = B模块->getMultiBInfo($bIds);
      foreach ($list as $_k => $_item) {
          $list[$_k]['b_info'] = $bList[$_item['b_id']] ?? [];
      }
      return $list;
  }


  //绑定C信息
  private function _mergeCInfo($list)
  {
    //类似_mergeBInfo
    return $list;
  }


  //绑定D信息
  private function _mergeDInfo($list)
  {
    //类似_mergeBInfo
    return $list;
  }
}

周知博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一种高性能对象信息绑定方案
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址