它是PHP中嵌套if语句的一个很好的选择吗?

时间:2019-06-14 09:27:36

标签: php if-statement

在这种情况下,执行一个功能取决于成功执行另一个返回值或null的功能,如下所示。

$user = $userModel->createUser();

if ($user) {
    // I skip how $user is being used here.
    $order = $orderModel->createOrder();

    if ($order) {
        // I skip how $order is being used here.
        $invoice = $invoiceModel->createInvoice();

        if ($invoice) {
            // I skip how $invoice is being used here.
            $payment = $paymentModel->createPayment();

            if ($payment) {
                // I skip how $payment is being used here.
                $shipping = $shippingModel->createShipping();

                if ($shipping) {
                    $this->notifyCustomer();
                }
            }
        }
    }
}

我确实知道编写许多嵌套的if语句不是一个好习惯。以下代码片段是更好的选择吗?

$user = $userModel->createUser();
$order = null;

if ($user) {
    // I skip how $user is being used here.
    $order = $orderModel->createOrder();
}

$invoice = null;

if ($order) {
    // I skip how $order is being used here.
    $invoice = $invoiceModel->createInvoice();    
}

$payment = null;

if ($invoice) {
    // I skip how $invoice is being used here.
    $payment = $paymentModel->createPayment();
}

$shipping = null;

if ($payment) {
    // I skip how $payment is being used here.
    $shipping = $shippingModel->createShipping();
}

if ($shipping) {
    $this->notifyCustomer();
}

为什么对此解决方案感到怀疑,是因为声明了多个变量以逃避嵌套的if语句。

0 个答案:

没有答案