Verschachtelte Aussagenlogik in Routinen realisieren
bearbeitet von
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
~~~php
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.
~~~php
$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`{: .language-php} usw.) wird beim Ausführen mit einem **Flag** gekennzeichnet. Wenn ein **Flag** beim Aufruf der Methode `SQLGenerator::getResult`{: .language-php}, die das _SQLGenerator_-Programm beendet, fehlt, wird eine `new Exception`{: .language-php} geworfen, da in diesem Beispiel die `SELECT`{: .language-php}-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. `array_sort()` in _C_?
lgmb
--
Sprachstörung
Verschachtelte Aussagenlogik in Routinen realisieren
bearbeitet von
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
~~~php
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.
~~~php
$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`{: .language-php} usw.) wird beim Ausführen mit einem **Flag** gekennzeichnet. Wenn ein **Flag** beim Aufruf der Methode `SQLGenerator::getResult`{: .language-php}, die das _SQLGenerator_-Programm beendet, fehlt, wird eine `new Exception`{: .language-php} geworfen, da in diesem Beispiel die `SELECT`{: .language-php}-Klausel in der Angabe nicht aufgerufen wurde.
**Zur Frage**
* Kann man diese Aussagenlogik in einer Kontrollstruktur besser lösen?
* Ist PHP für verschachtelte Aussagenlogik nicht geeignet?
lgmb
--
Sprachstörung
Verschachtelte Aussagenlogik in Routinen realisieren
bearbeitet von
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
~~~php
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.
~~~php
$sql = new SQLGenerator();
$sql
->from ( new Table ( 'tableA' ) )
->where( new Comparison ( '=',
new Column ( 'id' ),
new Numeric ( 2 ) )
->getResult( 4, 3 );
~~~
Jede _SQLGenerator_-Methode (z.B. `SQLGenerator::where`{: .language-php} usw.) wird beim Ausführen mit einem **Flag** gekennzeichnet. Wenn ein **Flag** beim Aufruf der Methode `SQLGenerator::getResult`{: .language-php}, die das _SQLGenerator_-Programm beendet, fehlt, wird eine `new Exception`{: .language-php} geworfen, da in diesem Beispiel die `SELECT`{: .language-php}-Klausel in der Angabe nicht aufgerufen wurde.
**Zur Frage**
* Kann man diese Aussagenlogik in einer Kontrollstruktur besser lösen?
* Ist PHP für verschachtelte Aussagenlogik nicht geeignet?
lgmb
--
Sprachstörung