代码:
global $gblDB;
if(abs($dataObj->Amount - $oldDataObj->Amount) < 0.00001)//相等
{
  return;
}
$objInfo = TObjectInfo::getInstance();
crm_include($objInfo->GetIncFile(OBJ_ACCOUNT));
$modelName = $objInfo->GetModelName(OBJ_ACCOUNT);
$model = new $modelName();
$model->setNoScope();
$olddo = $model->getDataObject($dataObj->AccountID);
$newDo = clone $olddo;
$newDo->Expense += $dataObj->Amount * 1;
$sql = "update tc_account set expense = expense + ".$dataObj->Amount." where account_id = ".$dataObj->AccountID;
$gblDB->Execute($sql);
$errno = $gblDB->getErrNo();
if($errno)
  throw new TDBException($errno);
else
{
  $msg = new TObjectMessage(OBJ_ACCOUNT,MSGOPR_UPDATE,$newDo, $olddo);
  TMessageQueue::FireMessage($msg);

解决方案 »

  1.   

    多次用到modelName类,先看看,应该有注释吧
      

  2.   


    的确如此
    这个是我们买的系统里面带的一段代码,我想做一个跟它差不多的功能,但我对PHP一点也不懂啊,诶,忧闷
      

  3.   

    "但我对PHP一点也不懂啊"你就从这里开始,那是不是门槛高了点.
      

  4.   

    global $gblDB;
    // 引进$gblDB 
    if(abs($dataObj->Amount - $oldDataObj->Amount) < 0.00001)//相等 
    // 取$dataObj下面的Amount和Amout相减后的绝对值,并判断是否小于一个数

      return; 
      // 如果符合则退出

    $objInfo = TObjectInfo::getInstance(); 
    // 初始化 TObjectInfo
    crm_include($objInfo->GetIncFile(OBJ_ACCOUNT));
    // 应该是动态包含一个文件 
    $modelName = $objInfo->GetModelName(OBJ_ACCOUNT);
    // 创建一个对象名 $objInfo->GetModelName(OBJ_ACCOUNT); 会返回一个对象
    $model = new $modelName(); 
    // 实例化一个对象
    $model->setNoScope();
    // 调用对象下面的方法 
    $olddo = $model->getDataObject($dataObj->AccountID); 
    // 取得数据并给值
    $newDo = clone $olddo;
    // 克隆数据 
    $newDo->Expense += $dataObj->Amount * 1; 
    // 上面的操作我不说了
    $sql = "update tc_account set expense = expense + ".$dataObj->Amount." where 
    // 整理Sql语句
    account_id = ".$dataObj->AccountID; 
    // 给值
    $gblDB->Execute($sql); 
    // 执行Sql语句
    $errno = $gblDB->getErrNo(); 
    // 看是否执行错误
    if($errno) 
    // 错误处理
      throw new TDBException($errno); 
    else 

      // 成功了则做一些事情,记Log或者什么的
      $msg = new TObjectMessage(OBJ_ACCOUNT,MSGOPR_UPDATE,$newDo, $olddo); 
      TMessageQueue::FireMessage($msg); 
      

  5.   

    to ls, 解释代码好像没什么用, 关键点是, 业务逻辑的思路体现不出来
      

  6.   


    ……过年了,几天先看看PHP基础吧