Es gäbe auch noch anonyme Funktionen und [MAN]function_exists[/MAN]. GOTO und Schleifen zu benutzen wäre auch eine Möglichkeit. Oder Includes. 1000 Möglichkeiten...
Ankündigung
Einklappen
Keine Ankündigung bisher.
Probleme mit verschachtelten Funktionen
Einklappen
Neue Werbung 2019
Einklappen
X
-
Darüber haben wir doch die ganze Zeit gesprochen?Es gäbe auch noch anonyme Funktionen...
anonyme Funktion = Lambda = PHP-Closure
Closure = eineFunktion die den Variablenscope einer übergeordneten Funktion in sich einschließt (ob anonym oder nicht ist dabei unerheblich, PHP-Closure != Closure)
function_exists – keine Ahnung wie Du das meinst?
goto – ist kein Ersatz für eine Funktion, Sprungbefehl, ändert den Programmfluss, auf biegen und brechen wahrscheinlich machbar, aber extremsts häßlich
includes – für temporäre wegwerf-dinger?
anonyme Funfktionen/Lambdas - unter anderem genau dafür geschaffen
Sehe ich nicht - zumindest keine vernünftigen.1000 Möglichkeiten...
vg
jack
Kommentar
-
Es löst exakt das Problem mit dem fatal error.function_exists – keine Ahnung wie Du das meinst?
Wer sagt, dass die Aufgabe nur mit einer Funktion lösbar ist?goto – ist kein Ersatz für eine Funktion,
Klar ist das häßlich. Aber eine der wenigen Möglichkeiten, im aktuellen Scope zu arbeitenSprungbefehl, ändert den Programmfluss, auf biegen und brechen wahrscheinlich machbar, aber extremsts häßlich
Und warum nicht?includes – für temporäre wegwerf-dinger?
Haben wir das? http://de1.php.net/manual/en/functio...e-function.phpDarüber haben wir doch die ganze Zeit gesprochen?
Was vor allem an der allgemeinen Fragestellung liegt. Möglicherweise ließe sich die Aufgabe sogar mit Schleifen, Rekursion und/oder break/switch lösen.Sehe ich nicht - zumindest keine vernünftigen.
Kommentar
-
Ja, das ist wirklich gutHaben wir das? http://de1.php.net/manual/en/functio...e-function.php
Also die Frage war dochWas vor allem an der allgemeinen Fragestellung liegt. Möglicherweise ließe sich die Aufgabe sogar mit Schleifen, Rekursion und/oder break/switch lösen.
Meine Absicht war es nicht sein Lösungskonzept in Frage zu stellen – dazu sehe ich erst mal auch keinen Grund – sondern zu zeigen wie man es in PHP umsetzen könnte. Das Arbeiten mit anonymen Funktionen halte ich grundsätzlich für keine bad practice – ganz im Gegenteil und bevor ich hier zu Klassen, includes, goto etc. greife, dann ziehe ich ganz klar PHP-Closures vor. Denn genau dazu (unter anderem natürlich) sind sie ja schließlich da.Ich wollte gestern bei einer sehr umfangreichen Funktion, jene Teile, die sich 1 zu 1 wiederholen in eine verschachtelte Funktion schreiben.
vg
jack
Kommentar
-
Ein bisschen darf man aber auch zwischen den Zeilen lesen.Also die Frage war doch
PHP-Code:for ($i = 0; $i<3 ; ++$i) {
switch ($i) {
// Pre-Actions
case 1:
// viel Code;
break;
case 2:
// noch mehr Code;
break;
case 3:
// usw....
break;
}
switch ($i) {
case 1:
case 3:
// Code, der oft vorkommt...
break;
case 2:
// Code, der auch oft vorkommt...
break;
}
}
// Post-Actions
// ...
Kommentar
-
Nur der vollständigkeitshalber fürs Protokoll (ihr habt ja auch ohne mich viel Spaß
:
Ich habe eine externe Funktion geschrieben mit 16 Variablen, die ihr übergeben werden und sie gibt in einem Array 8 Variablen zurück.
Dadurch ist meine Monsterfunktion von 680 Zeilen auf 260 Zeilen geschrumpft.
(Ich hoffe ihr mögt Zahlen
)
Wenn ich weiter bin, schaue ich mir eure Diskusson nochmal an.
Auf jeden Fall danke für die Idee mit dem Array als Rückgabewert!!!
Kommentar
-
Und was macht diese Funktion? Den Sinn des Lebens berechnen? (260 Zeilen in einer Funktion sind um EINIGE zu viele.)
Kommentar

Kommentar