Отправка отзывы клиентов


Я обычно сталкиваюсь с большим , если/остальное. Я хотел бы получить некоторые предложения на мой код:

if( $blnLogged && isset( $_POST['postReview'] ) )
{
    if( $_SESSION['REVIEW']['SUBMITTED'] != '' )
    {
        $arrSharedData['blnRetSave'] = $_SESSION['REVIEW']['SUBMITTED'];
        $blnShowForm = false;
        $blnReviewPosted = true;
    }else{
        if( $arrData['captcha'] != $_SESSION['REVIEW']['CODE'] )
        {
            $strErrMsg = 'Invalid Captcha Code...';
        }else{
            if( empty( $arrData['review_title'] ) || empty( $arrData[ 'review_description' ] ) || empty( $arrData[ 'overall_review' ] ) || empty( $arrData[ 'cleanliness' ] ) || empty( $arrData[ 'facilities' ] ) || empty( $arrData[ 'location' ] ) || empty( $arrData[ 'quality_of_service' ] ) || empty( $arrData[ 'room' ] ) || empty( $arrData[ 'value_of_money' ]) )
            {
                $strErrMsg = 'Required field missing...';
            }else{

                //do we need any processing...
                $arrData['business_id'] = $bID;
                $arrData['client_id']   = $_SESSION['site_user'];
                $arrData['website_id']  = WEBSITE_ID;
                $arrData['review_date'] = date('Y-m-d');

                //If field Transformation required do it...

                $objTripReview = SM_Loader::loadClass('Class_Reviews');
                $blnRetSave = $objTripReview->saveReview( $arrData );
                $_SESSION['REVIEW']['SUBMITTED'] = $blnRetSave;
                $arrSharedData['blnRetSave'] = $_SESSION['REVIEW']['SUBMITTED'];
                $blnShowForm = false;
                $blnReviewPosted = true;
            }
        }
    }
}

if( $blnShowForm === true )
{
    $_SESSION['REVIEW']['CODE'] = rand(9999,99999);
    $_SESSION['Review']['SUBMITTED'] = '';
}


557
3
php
задан 25 февраля 2011 в 06:02 Источник Поделиться
Комментарии
2 ответа

Один простой способ улучшить это, чтобы упаковать его в функцию и возврат (или исключение) после каждого $strErrMsg = ... линии. Это позволит сгладить функцию, и позволяют поставить основную функциональность на "высшем уровне" функции.

Еще лучше может быть, чтобы переместить весь код проверки в отдельную функцию, которая генерирует исключение, а затем обработать его в функцию, которая называется не с теми параметрами.

5
ответ дан 25 февраля 2011 в 07:02 Источник Поделиться

Вместо

if (x)
{
// ...
}
else
{
if (y)
{
// ...
}
}

вы можете просто написать

if (x)
{
// ...
}
else if (y)
{
// ...
}

В дополнение к этому, я бы поставил в список обязательных полей в массиве, где легко ремонтопригодны, поэтому он не похоронен где-то глубоко в сложный код:

$requiredFields = array( 'review_title', 'review_description',
'overall_review', 'cleanliness', 'facilities', 'location',
'quality_of_service', 'room', 'value_of_money' );

Тогда ваш код будет выглядеть следующим образом:

if( $blnLogged && isset( $_POST['postReview'] ) )
{
$requiredFieldsPresent = true;
foreach( $requiredFields as $field )
if( empty( $arrData[$field] ) )
$requiredFieldsPresent = false;

if( $_SESSION['REVIEW']['SUBMITTED'] != '' )
{
$arrSharedData['blnRetSave'] = $_SESSION['REVIEW']['SUBMITTED'];
$blnShowForm = false;
$blnReviewPosted = true;
}
else if( $arrData['captcha'] != $_SESSION['REVIEW']['CODE'] )
{
$strErrMsg = 'Invalid Captcha Code...';
}
else if( !$requiredFieldsPresent )
{
$strErrMsg = 'Required field missing...';
}
else
{
// do we need any processing...
// etc.
}
}

3
ответ дан 25 февраля 2011 в 02:02 Источник Поделиться