MB: Verschachtelte Aussagenlogik in Routinen realisieren

Beitrag lesen

moin,

Ausgangssituation

Es geht mir konkret um Flags die zu Laufzeit gesammelt werden und am Ende vorhanden sind oder nicht. Die Flags lenken so durch Aussagenlogik in einer Kontrollstruktur das Programm.

Abstraktes Beispiel:

Eine Kontrollstruktur mit Metasyntaktischen Variablen dargestellt

if ( $foo and $bar or !( $tok and $qax ) ) {
  doSomeThing();
} else if ( !$foo or $bar and $tok and $qax ) ) {
  anOtherThing();
} else if ( ... ) {
  
}

Anwendungs Beispiel:

Ein anderes sehr konkretes jedoch vereinfachtes Beispiel mit einem SQLGenerator was einen Exception wirft.

$sql = new SQLGenerator();
$sql
  ->from ( new Table ( 'tableA', 'tA' ) )
  ->where( new Comparison ( '=',
    new Column ( 'tA', 'id' ),
    new Numeric ( 2 ) )
  ->getResult( 4, 3 );

Jede SQLGenerator-Methode (z.B. SQLGenerator::where usw.) wird beim Ausführen mit einem Flag gekennzeichnet. Wenn ein Flag beim Aufruf der Methode SQLGenerator::getResult, die das SQLGenerator-Programm beendet, fehlt, wird eine new Exception geworfen, da in diesem Beispiel die SELECT-Klausel in der Angabe nicht aufgerufen wurde.

Zur Frage

  • Gibt es einen besseren Weg zur Lösung als die Abarbeitung der Aussagenlogik in einer Kontrollstruktur (erstes Beispiel)?
  • Ist PHP für verschachtelte Aussagenlogik generell ungeeignet, sodass man Funktionale Programmiersprachen für dieses Problem heranzieht z.B. PHP BuiltIn Funktion sort() in C programmiert?

lgmb

--
Sprachstörung

akzeptierte Antworten