do { xxx }while(false); 是什么操作

这个主要用于有逻辑判断的代码。
比如 里面要处理一些内容,但是又要控制一些输出或者什么逻辑的。
XXX 代码又是一个整体,里面可以直接break等处理的时候,就很有用

复制代码
<?php
do{
    if(is_fail($balance_result)){
        $response = $balance_result;
        break;
    }
    $balance = $balance_result["data"]["balance"];
    if($balance < $order["diamond_num"]){
        if(! $is_retry){
            Model_Failorder::instance()->insert(array(
                'order_id' => $order['order_id'],
            ), true);
        }
        $money_as_str = Common_Money::format_money(self::balance2money($balance));
        $response = fail(__(sprintf("余额不足(余额只有%s元)", $money_as_str)));
        break;
    }
    $consume_result = $this->consume($user, $yyb_user, $order);
    if(is_fail($consume_result)){
        $response = $consume_result;
        if($response['data']['yyb_code'] == Common_Yyb::YYB_CODE_AUTH_FAIL){
            Model_Loginretryorder::instance()-> ins_by_ignore(array(
                'order_id' => $order['order_id'],
                'user_id' => $order['user_id'],
            ));
        }
        break;
    }
    $channel_status = Common_Pay::CS_SUCCESS;
    Model_Order::instance()->update_by_order_num($order_num, array(
        'channel_status' => $channel_status,
    ));
    $response = Common_Pay::complete_order_by_order_num($order_num, $is_inject);
    Common_Yyb::on_gdt_complete_order($order);
    $response['data']['consume_success'] = true;
}while(false);

if(is_fail($response)){
    //记录订单失败原因
    Model_Order::instance()->update_by_order_num($order_num, array(
        'channel_status' => $channel_status,
        'fail_reason' => $response['msg'],
    ));
}
return $response;
复制代码

 

posted @   北七星  阅读(240)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
F**k me on Gitee
点击右上角即可分享
微信分享提示