2016-04-18 3 views
1

Ich machte einige Refactoring von Code auf Projekt in Yii2 Framework.Refactoring von einfachem Code in Yii2 (if-else)

Ich frage nur, ob dies schöner geschrieben werden kann, mit weniger Wiederholungen (ich versuche, DRY zu folgen, wann immer ich kann). Jede Literaturempfehlung zu dieser Thematik ist mehr als willkommen, tut mir leid für schlechtes Englisch.

$exception = Yii::$app->errorHandler->exception; 

    if ($exception !== null) { 
     if (isset($exception->statusCode)) { 
      if ($exception->statusCode == 500) { 
       return $this->render('error-500', ['exception' => $exception]); 
      } elseif ($exception->statusCode == 404) { 
       return $this->render('error-404', ['exception' => $exception]); 
      } else { 
       return $this->render('error', ['exception' => $exception]); 
      } 
     } elseif (isset($exception->code)) { 
      if ($exception->code == 500) { 
       return $this->render('error-500', ['exception' => $exception]); 
      } elseif ($exception->code == 404) { 
       return $this->render('error-404', ['exception' => $exception]); 
      } else { 
       return $this->render('error', ['exception' => $exception]); 
      } 
     } 
    } else { 
     $exception = new \yii\web\HttpException(500); 
     return $this->render('error-500', ['exception' => $exception]); 
    } 

Antwort

2

Sie können dies tun, wenn Sie

wie
$exception = Yii::$app->errorHandler->exception; 

    if ($exception !== null) { 
     if (isset($exception->statusCode){ 
      return $this-render('error-' . $exception->statusCode , ['exception' => $exception]); 
     } else if (isset($exception->code)) { 
      return $this-render('error-' . $exception->code , ['exception' => $exception]) 
     } else { 
     $exception = new \yii\web\HttpException(500); 
     return $this->render('error-500', ['exception' => $exception]); 
     } 
    } 

oder so, wenn wie kompakter

if ($exception !== null) { 
     if (isset($exception->statusCode, $exception->code){ 
      return $this-render('error-' . ($exception->statusCode) ? $exception->statusCode : $exception->code , ['exception' => $exception]); 
     } else { 
     $exception = new \yii\web\HttpException(500); 
     return $this->render('error-500', ['exception' => $exception]); 
     } 
    } 
+0

u Mann vm danken. Meine Gedanken stoppten nach 10 Stunden Arbeit. –

+0

Ich bin glücklich, dass mein Geist nach 8 Stunden Arbeit aufhörte – scaisEdge

1

Eine andere Möglichkeit

 if ($exception !== null) { 

     $exceptionCode = isset($exception->statusCode)?$exception->statusCode: 
       (isset($exception->code)?$exception->code:null); 

     if($exceptionCode){ 
      $viewFile = ($exceptionCode == 500)?'error-500': 
        (($exceptionCode == 404)?'error-404':'error'); 

      return $this->render($viewFile, ['exception' => $exception]); 

     } else { 
      // you need to something here 
     } 

    }