php goto.....

php goto.....

am 23.06.2006 17:30:47 von christian steck

hallo liebe NG's

folgende Frage:
Ich möchte in einem und dem selben PHP script an eine andere stelle springen
falls IF aufgeht.

z.B.:

if($email == "")

{goto: an eine andere stelle vom script. also den nächsten Teil
überspringen}

else
{irgendwas}

goto: und mach hier weiter

Vielen Dank im Voraus
Lg christian steck

Re: php goto.....

am 23.06.2006 17:42:22 von Daniel Fett

Christian Steck wrote:
> hallo liebe NG's
>
> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle springen
> falls IF aufgeht.
>
> z.B.:
>
> if($email == "")
>
> {goto: an eine andere stelle vom script. also den nächsten Teil
> überspringen}
>
> else
> {irgendwas}
>
> goto: und mach hier weiter

goto führt zu Spaghetticode. Schau dir z.B. mal Funktionen an.

PHP stellt genug Konstrukte bereit, damit man kein goto braucht.

Daniel
--
Zum Thema "Esoterik": http://www.danielfett.de/df_artikel_astrologie
Kleines RegEx-Tutorial: http://www.danielfett.de/df_artikel_regex
Sicherheit in PHP+MySQL: http://www.danielfett.de/df_artikel_sicherheit

Re: php goto.....

am 23.06.2006 18:07:08 von christian steck

"Daniel Fett" wrote in message
news:e7h24v$pgh$00$1@news.t-online.com...
> Christian Steck wrote:
>> hallo liebe NG's
>>
>> folgende Frage:
>> Ich möchte in einem und dem selben PHP script an eine andere stelle
>> springen falls IF aufgeht.
>>
>> z.B.:
>>
>> if($email == "")
>>
>> {goto: an eine andere stelle vom script. also den nächsten Teil
>> überspringen}
>>
>> else
>> {irgendwas}
>>
>> goto: und mach hier weiter
>
> goto führt zu Spaghetticode. Schau dir z.B. mal Funktionen an.
>
> PHP stellt genug Konstrukte bereit, damit man kein goto braucht.

gibt es keinen einfachen befehl?
bin bei google nicht wirklich fündig geworden.

lg
christian steck

Re: php goto.....

am 23.06.2006 18:11:40 von Norbert Melzer

Christian Steck schrieb:
> "Daniel Fett" wrote in message=20
>> goto fï¿=BDhrt zu Spaghetticode. Schau dir z.B. mal Funktionen an.=

>>
>> PHP stellt genug Konstrukte bereit, damit man kein goto braucht.
>=20
> gibt es keinen einfachen befehl?
> bin bei google nicht wirklich fï¿=BDndig geworden.

Daniel erwähnte Funktionen, mit denen kannst Du quasi Befehle selber=

schreiben:

http://www.php.net/manual/en/language.functions.php

HTH
Norbert

PS: Die Letzte mir bekannte Sprache in der ein GOTO zwingend nötig w=
ar
aufgrund mangelnder Alternativen ist Commodore-Basic in allen Versionen
(mit Basics auf PC zB QBasic, habe ich mich nie beschäftigt, kann da=
s
daher dort nicht beurteilen)

Re: php goto.....

am 23.06.2006 18:20:05 von Frank Schenk

Christian Steck wrote:
> hallo liebe NG's
>
> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle springen
> falls IF aufgeht.
>
> z.B.:
>
> if($email == "")
>
> {goto: an eine andere stelle vom script. also den nächsten Teil
> überspringen}

Das offizielle Handbuch gibbs gratis:
http://www.php.net

Such nach "Control Structures" (Kontrollstrukturen) oder noch besser,
schau dir ein Tutorial an oder kauf dir ein Buch.


gruß, Frank

Re: php goto.....

am 23.06.2006 18:22:43 von Christian Schmelzer

Christian Steck wrote:

[...]

>>> goto: und mach hier weiter
>>
>> goto führt zu Spaghetticode. Schau dir z.B. mal Funktionen an.
>>
>> PHP stellt genug Konstrukte bereit, damit man kein goto braucht.
>
> gibt es keinen einfachen befehl?
> bin bei google nicht wirklich fündig geworden.
>

Hallo,
nein, es gibt kein goto. Beschreibe doch mal dein Problem bei dem du
unbedingt ein goto brauchst. Ich bin mir nahezu sicher, dass es da ein
Problem in deiner Logik gibt.

Christian

Re: php goto.....

am 23.06.2006 18:23:46 von Niels Braczek

Christian Steck schrieb:

> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle s=
pringen=20
> falls IF aufgeht.

Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein
untrügliches Zeichen dafür, dass grundlegende Konzepte der
Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.

> z.B.:
>=20
> if($email == "")
>=20
> {goto: an eine andere stelle vom script. also den nächsten Teil=20
> überspringen}
>=20
> else
> {irgendwas}
>=20
> goto: und mach hier weiter

Ein goto gibt es glücklicherweise nicht.
Man kann Bedingungen negieren.

if ($email !=3D '') {
// irgendwas
}
// und mach hier weiter

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: php goto.....

am 23.06.2006 18:37:33 von christian steck

"Christian Schmelzer" wrote in message
news:449c1553$0$11063$9b4e6d93@newsread4.arcor-online.net...
> Christian Steck wrote:
>
> [...]
>
>>>> goto: und mach hier weiter
>>>
>>> goto führt zu Spaghetticode. Schau dir z.B. mal Funktionen an.
>>>
>>> PHP stellt genug Konstrukte bereit, damit man kein goto braucht.
>>
>> gibt es keinen einfachen befehl?
>> bin bei google nicht wirklich fündig geworden.
>>
>
> Hallo,
> nein, es gibt kein goto. Beschreibe doch mal dein Problem bei dem du
> unbedingt ein goto brauchst. Ich bin mir nahezu sicher, dass es da ein
> Problem in deiner Logik gibt.

hey

War wirklich ein Prob. der Logik .-)!
Mein Problem ist eigentlich ganz einfach.

Email Adresse ist kein Pflichtfeld aber kann eingetragen werden.
Falls die email eingetragen wird sendet mein Script eine Email an diese
Person zur Bestätigung.

Aber falls sie eben nicht eingetragen wird möchte ich die mail() funktion
überspringen.

if ($email == "")
{}

else
{
mail()
print <<< EOT
// das Prob. ist das hier noch eine html ausgabe war die unbedingt sein
muss. ist aber inzwischen an eine andere stelle verschoben worden.
EOT;

}

Vielen Dank für eure Beiträge
Werde mir Die Function noch mal ansehen

thx

LG

Christian Steck

Re: php goto.....

am 23.06.2006 18:45:29 von Frank Schenk

Christian Steck wrote:
> mail()
> print <<< EOT
> // das Prob. ist das hier noch eine html ausgabe war die unbedingt sein
> muss. ist aber inzwischen an eine andere stelle verschoben worden.
> EOT;

In der Tat geht auch:


if(isset($foo)){

?>

HML Kram


} else {

?>
Mehr HTML


}
?>

Wobei das nicht sehr elegant ist (Templates), steht aber alles im
Handbuch und so.

gruß, Frank

Re: php goto.....

am 23.06.2006 19:10:09 von Klaus Herzberg

Hallo,

Niels Braczek wrote:
> Der Wunsch nach goto ist ein
> untrügliches Zeichen dafür, dass grundlegende Konzepte der
> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
naja, ich wage zu widersprechen:
Der Wunsch nach goto ist ein zutiefst menschlicher, denn es entspricht
doch irgendwie dem menschlichen Handeln.

Der Wunsch nach goto ist wahrscheinlich eher ein untruegliches Zeichen,
dass der OP immer fehlerfreien Code geschrieben hat und noch nie
debuggen musste.

mfg. klaus.

Re: php goto.....

am 23.06.2006 19:28:40 von Niels Braczek

Klaus Herzberg schrieb:
> Niels Braczek wrote:

>> Der Wunsch nach goto ist ein
>> untrügliches Zeichen dafür, dass grundlegende Konzepte der
>> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.

> naja, ich wage zu widersprechen:
> Der Wunsch nach goto ist ein zutiefst menschlicher, denn es entspricht
> doch irgendwie dem menschlichen Handeln.

Ich sehe da keinen Widerspruch.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: php goto.....

am 23.06.2006 19:39:57 von Norbert Melzer

Klaus Herzberg schrieb:

> Der Wunsch nach goto ist ein zutiefst menschlicher, denn es entspricht
> doch irgendwie dem menschlichen Handeln.

Ganz ehrlich, ich durchwühle mich lieber durch 5000 Zeilen
unkommentierten PHP Code mit einem Funktionsaufruf nach dem anderen als
durch meine alten ebenso unkommentierten Basicprogrogramme die selten
größer wurden als 200 bis 300 Zeilen aber da aufgrund des sehr
beschränkten IF-Statements eben nicht ohne Goto auskamen...

MFG
Norbert

Re: php goto.....

am 23.06.2006 21:22:14 von Stefan Scholl

Niels Braczek wrote:
> Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein
> untrügliches Zeichen dafür, dass grundlegende Konzepte der
> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.

Diese reflexartigen Reaktionen auf "goto" kennzeichnen nur einen
leicht fortgeschrittenen Anfänger.

Re: php goto.....

am 23.06.2006 21:36:01 von Matthias Esken

On Fri, 23 Jun 2006 17:30:47 +0200, Christian Steck wrote:

> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle springen
> falls IF aufgeht.
>
> z.B.:
>
> if($email == "")
>
> {goto: an eine andere stelle vom script. also den nächsten Teil
> überspringen}
>
> else
> {irgendwas}
>
> goto: und mach hier weiter

Das mit dem Überspringen habe ich nicht recht verstanden. Der else-Zweig
wird doch nicht ausgeführt.

Dein Problem sollte sich auch problemlos ohne goto lösen lassen. PHP 6 wird
allerdings wohl - zu meinem großen Leidwesen - goto enthalten. *seufz*
Jetzt wird schon mal aufgeräumt und dann nimmt man so einen Humbug auf.

Gruß,
Matthias

Re: php goto.....

am 23.06.2006 22:08:55 von Niels Braczek

Stefan Scholl schrieb:
> Niels Braczek wrote:

>> Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein=

>> untrügliches Zeichen dafür, dass grundlegende Konzepte der
>> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
>=20
> Diese reflexartigen Reaktionen auf "goto" kennzeichnen nur einen
> leicht fortgeschrittenen Anfänger.

Woher nimmst du diese Weisheit? Und woher nimmst du die Frechheit, mir
fast 30 Jahre Programmiererfahrung in rd. 25 verschiedenen Maschinen-
und Hochsprachen abzusprechen?

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: php goto.....

am 23.06.2006 22:13:07 von Niels Braczek

Matthias Esken schrieb:

> Dein Problem sollte sich auch problemlos ohne goto lösen lassen. PHP =
6 wird
> allerdings wohl - zu meinem großen Leidwesen - goto enthalten. *seufz=
*

Immerhin wird's nicht goto heißen und wie break und continue nur
Vorwärtssprünge erlauben.

> Jetzt wird schon mal aufgeräumt und dann nimmt man so einen Humbug au=
f.

Sehe ich allerdings auch so. Als nächstes kommt ALTER, ein Befehl, der
den Sourcecode zur Laufzeit ändert...

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: php goto.....

am 23.06.2006 23:47:54 von Stefan Scholl

Niels Braczek wrote:
> Stefan Scholl schrieb:
>> Niels Braczek wrote:
>>> Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein
>>> untrügliches Zeichen dafür, dass grundlegende Konzepte der
>>> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
>>
>> Diese reflexartigen Reaktionen auf "goto" kennzeichnen nur einen
>> leicht fortgeschrittenen Anfänger.
>
> Woher nimmst du diese Weisheit? Und woher nimmst du die Frechheit, mir
> fast 30 Jahre Programmiererfahrung in rd. 25 verschiedenen Maschinen-
> und Hochsprachen abzusprechen?

Jetzt sprech ich Dir noch viel mehr ab.

Mahlzeit.

Re: php goto.....

am 24.06.2006 01:45:26 von Ralf Zschemisch

Am Fri, 23 Jun 2006 17:30:47 +0200 schrieb Christian Steck:

Hallo :)

> {goto:

Es gibt einen Goto Patch für PHP
http://news.php.net/php.internals/11599

Beispiele mit weiteren Links und Informationen
über Goto in PHP hier =>
http://www.php-center.de/beitraege/detail.php?a_id=495

hth

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: php goto.....

am 24.06.2006 01:55:31 von Ralf Zschemisch

Am Fri, 23 Jun 2006 18:23:46 +0200 schrieb Niels Braczek:

> Der Wunsch nach goto ist ein
> untrügliches Zeichen dafür, dass grundlegende Konzepte der
> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.

hüst

Hier mal ein Pro Goto von Hartmut Holzgraefe
http://www.php-center.de/phorum/read.php?f=552&i=11&t=11

> Ein goto gibt es glücklicherweise nicht.
> Man kann Bedingungen negieren.

Du kannst gerne deine PHP Version patchen
http://news.php.net/php.internals/11599

cu

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: php goto.....

am 24.06.2006 02:51:57 von Stefan Scholl

Norbert Melzer wrote:
> PS: Die Letzte mir bekannte Sprache in der ein GOTO zwingend nötig war
> aufgrund mangelnder Alternativen ist Commodore-Basic in allen Versionen
> (mit Basics auf PC zB QBasic, habe ich mich nie beschäftigt, kann das
> daher dort nicht beurteilen)


ANSI Common Lisp hat ein GOTO (bzw. GO). Ist sehr nützlich wenn
man sich eigene Kontrollstrukturen mit DEFMACRO baut.

Benutzt z. B. auch ITERATE
recht elegant.


ITER> (iterate (for i from 1 to 10)
(collect i))
(1 2 3 4 5 6 7 8 9 10)
ITER> (macroexpand '(iterate (for i from 1 to 10)
(collect i)))
(LET* ((I NIL) (#:RESULT25 NIL) (#:END-POINTER26 NIL) (#:TEMP27 NIL))
(BLOCK NIL
(TAGBODY
(SETQ I 0)
LOOP-TOP-NIL
(SETQ I (+ I 1))
(IF (> I 10) (GO LOOP-END-NIL))
(PROGN
(SETQ #:TEMP27 (LIST I))
(SETQ #:END-POINTER26
(IF #:RESULT25
(SETF (CDR #:END-POINTER26) #:TEMP27)
(SETQ #:RESULT25 #:TEMP27)))
#:RESULT25)
(GO LOOP-TOP-NIL)
LOOP-END-NIL)
#:RESULT25))
T


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

Re: php goto.....

am 24.06.2006 02:52:12 von Niels Braczek

Ralf Zschemisch schrieb:
> Am Fri, 23 Jun 2006 18:23:46 +0200 schrieb Niels Braczek:
>=20
>> Der Wunsch nach goto ist ein
>> untrügliches Zeichen dafür, dass grundlegende Konzepte der
>> Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
>=20
> hüst=20
>=20
> Hier mal ein Pro Goto von Hartmut Holzgraefe=20
> http://www.php-center.de/phorum/read.php?f=3D552&i=3D11&t=3D 11

Wobei das, was Hartmut dort beschreibt, dem Konzept von break wesentlich
näher steht, als dem von goto, wie man es gemeinhin kennt (also dem GOT=
O
aus BASIC).

>> Ein goto gibt es glücklicherweise nicht.
>> Man kann Bedingungen negieren.
>=20
> Du kannst gerne deine PHP Version patchen
> http://news.php.net/php.internals/11599

Danke, nein; ich habe mir schon damals für die CBM8032 einen Präcompi=
ler
gebaut, der mich vom GOTO befreit hat ;-)

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: php goto.....

am 24.06.2006 03:08:11 von Hendrik Pilz

Christian Steck wrote:
> hallo liebe NG's
>
> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle springen
> falls IF aufgeht.
>
> z.B.:
>
> if($email == "")
>
> {goto: an eine andere stelle vom script. also den nächsten Teil
> überspringen}
>
> else
> {irgendwas}
>
> goto: und mach hier weiter
>
Du könntest Exceptions dafür missbrauchen ;>

try
{
if ($email == "")
{
throw new EmailException();
}

else
{
// irgendwas
}
}

catch (EmailException $e)
{
// hier dein Goto Code
}

Zu Sinn und Unsinn von Goto haben die Anderen ja schon genug gesagt.

Gruß, Hendrik

Re: php goto.....

am 24.06.2006 12:57:56 von Rainer Hinz

Christian Steck wrote:
> hallo liebe NG's
>=20
> folgende Frage:
> Ich möchte in einem und dem selben PHP script an eine andere stelle s=
pringen=20
> falls IF aufgeht.
>=20
> z.B.:
>=20
> if($email == "")
>=20
> {goto: an eine andere stelle vom script. also den nächsten Teil=20
> überspringen}
>=20
> else
> {irgendwas}
>=20
> goto: und mach hier weiter
>=20

Auch wenn goto an sich brauchbar wäre, verwenden tue es bitte nicht.=20
Wenn du so eine Art Ablaufsteuerung haben möchtest, empfehle ich immer =

folgende Möglichkeit.

Dein Php-Skript:

$okay=3Dfalse;$emergencyout=3D0;
$step=3D$_REQUEST["step"];

while( !$okay && $emergencyout++<5 ){
switch( $step ){
case "buildform":
// baue Formular

$okay=3Dtrue;
break;
case "sendmail":
...
if( IRGENDWAS ){ $step=3D"reaktion"; break; }
if( IRGENDWASANDEREN) { $step=3D"anderereaktion"; break; }

$okay=3Dtrue;
break;
case "reaktion":


$okay=3Dtrue;
break;
case "anderereaktion":


$step=3D"buildform";
break;

default:
$step=3D"buildform";
}
}

Erklärung:
Dein ganzer Haupt-Code ist von einer While Schleife umgeben, diese=20
While Schleife wird durchlaufen, solange $okay=3Dfalse ist und=20
$emergencyout<5. Letzeres dient als eine Art Notausstieg, wenn man mal=20
vergißt $okay auf true zu setzen.
Dein Code enthält mehrere Schritte, die sich durch die GET/POST=20
Variable $step unterscheiden=20
(http://rechner?step=3Dtudies&wert1=3DX&wert2=3DY usw.) Das Switch()=20
Konstrukt wertet nun diese Variable $step aus. Wenn du der Meinung=20
bist, nach einem bestimmten Schritt wäre das Skript noch nicht fertig, =

verzichtest du einfach darauf, am Ende des Skripts $okay auf true zu=20
setzen UND setzt einen neuen Schritt, wie das unter den Schritt=20
sendmail zum Beispiel steht.
Das ist meines Erachtens wesentlich sauberer, als mit überraschenden=20
GOTO irgendwo aufzutauchen und ist übersichtlicher.
Einziger Nachteil ist eventuell, mal ein paar $okay=3Dtrue zu setzen, was=
=20
ohne $emergencyout in eine Endlosschleife münden kann (besonders lustig=
=20
beim Befüllen von Datenbanken :-( )

Gruß
Anni

Re: php goto.....

am 26.06.2006 10:25:43 von Frank Schenk

Stefan Scholl wrote:
> Niels Braczek wrote:
>
>>Stefan Scholl schrieb:
>>
>>>Niels Braczek wrote:
>>>
>>>>Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein
>>>>untrügliches Zeichen dafür, dass grundlegende Konzepte der
>>>>Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
>>>
>>>Diese reflexartigen Reaktionen auf "goto" kennzeichnen nur einen
>>>leicht fortgeschrittenen Anfänger.
>>
>>Woher nimmst du diese Weisheit? Und woher nimmst du die Frechheit, mir
>>fast 30 Jahre Programmiererfahrung in rd. 25 verschiedenen Maschinen-
>>und Hochsprachen abzusprechen?
>
>
> Jetzt sprech ich Dir noch viel mehr ab.

Ich glaub Lisp verklebt die Synapsen und macht unempfindlich gegen
andere Sichtweisen denn die eigenen.


gruß, Frank

Re: php goto.....

am 26.06.2006 10:32:35 von thornythegod

Stefan Scholl schrieb:
> Niels Braczek wrote:
>
>>Stefan Scholl schrieb:
>>
>>>Niels Braczek wrote:
>>>
>>>>Nein, du möchtest Programmieren lernen. Der Wunsch nach goto ist ein
>>>>untrügliches Zeichen dafür, dass grundlegende Konzepte der
>>>>Programmierung (in Hochsprachen) noch nicht verinnerlicht wurden.
>>>
>>>Diese reflexartigen Reaktionen auf "goto" kennzeichnen nur einen
>>>leicht fortgeschrittenen Anfänger.
>>
>>Woher nimmst du diese Weisheit? Und woher nimmst du die Frechheit, mir
>>fast 30 Jahre Programmiererfahrung in rd. 25 verschiedenen Maschinen-
>>und Hochsprachen abzusprechen?
>
> Jetzt sprech ich Dir noch viel mehr ab.

Niels verfügt auch über genügend soziale Kompetenz, um aus der
Fragestellung herauszulesen, dass die Verwendung des goto's aus dem
resultiert, was er aufzählt: Mangelndes Programmierverständnis.
Ansonsten wäre die Frage völlig anders formuliert.

BTW: Wenn du die meisten Konzepte des Programmieren verstanden hast, ist
die Anzahl der Sprachen, die man "sprechen" kann enorm. Und ab da zählt
fast nur noch Erfahrung.

Gruß,
Torsten

Re: php goto.....

am 28.06.2006 10:00:53 von Andre Manikofski

Anni Schmidt schrieb:
> Christian Steck wrote:
>> hallo liebe NG's
>>
>> folgende Frage:
>> Ich möchte in einem und dem selben PHP script an eine andere stelle
>> springen falls IF aufgeht.
>>
>> z.B.:
>>
>> if($email == "")
>>
>> {goto: an eine andere stelle vom script. also den nächsten Teil
>> überspringen}
>>
>> else
>> {irgendwas}
>>
>> goto: und mach hier weiter
>>
>
> Auch wenn goto an sich brauchbar wäre, verwenden tue es bitte nicht.
> Wenn du so eine Art Ablaufsteuerung haben möchtest, empfehle ich immer
> folgende Möglichkeit.
>
> Dein Php-Skript:
>
> $okay=false;$emergencyout=0;
> $step=$_REQUEST["step"];
>
> while( !$okay && $emergencyout++<5 ){
> switch( $step ){
> case "buildform":
> // baue Formular
>
> $okay=true;
> break;
> case "sendmail":
> ...
> if( IRGENDWAS ){ $step="reaktion"; break; }
> if( IRGENDWASANDEREN) { $step="anderereaktion"; break; }
>
> $okay=true;
> break;
> case "reaktion":
>
>
> $okay=true;
> break;
> case "anderereaktion":
>
>
> $step="buildform";
> break;
>
> default:
> $step="buildform";
> }
> }
>
> Erklärung:
> Dein ganzer Haupt-Code ist von einer While Schleife umgeben, diese While
> Schleife wird durchlaufen, solange $okay=false ist und $emergencyout<5.
> Letzeres dient als eine Art Notausstieg, wenn man mal vergißt $okay auf
> true zu setzen.
> Dein Code enthält mehrere Schritte, die sich durch die GET/POST Variable
> $step unterscheiden (http://rechner?step=tudies&wert1=X&wert2=Y usw.)
> Das Switch() Konstrukt wertet nun diese Variable $step aus. Wenn du der
> Meinung bist, nach einem bestimmten Schritt wäre das Skript noch nicht
> fertig, verzichtest du einfach darauf, am Ende des Skripts $okay auf
> true zu setzen UND setzt einen neuen Schritt, wie das unter den Schritt
> sendmail zum Beispiel steht.
> Das ist meines Erachtens wesentlich sauberer, als mit überraschenden
> GOTO irgendwo aufzutauchen und ist übersichtlicher.
> Einziger Nachteil ist eventuell, mal ein paar $okay=true zu setzen, was
> ohne $emergencyout in eine Endlosschleife münden kann (besonders lustig
> beim Befüllen von Datenbanken :-( )
>
> Gruß
> Anni
>
>
>
>

Hallo Liste,

soll es nich ein goto in der PHP- Version 6 geben - das es aber nur in
Verbindung mit Schleifenstrukturen geben soll!

Meine persönlich Meinung zu goto- Konstrukten ist - das ich sie nie
gebraucht habe in der Zeit seit dem ich Programmiere.

Wo ich die Idee mit dem goto in einer großen Schleifenstruktur recht
sinnvoll finde - um dort bei einer Exception bequem raus zu springen
bzw. die Fehlermarke zu initialisieren.

Mein Senf zum Senf. :-)

Gruß

André

Re: php goto.....

am 01.07.2006 09:36:21 von Thomas Rachel

Norbert Melzer wrote:

> Ganz ehrlich, ich durchwühle mich lieber durch 5000 Zeilen
> unkommentierten PHP Code mit einem Funktionsaufruf nach dem anderen als
> durch meine alten ebenso unkommentierten Basicprogrogramme die selten
> größer wurden als 200 bis 300 Zeilen aber da aufgrund des sehr
> beschränkten IF-Statements eben nicht ohne Goto auskamen...

Eben - weil es sonst nichts gab.

Ebenso lese ich aber wesentlich lieber C-Code, bei dem an geeigneten
Stellen sparsame "goto error" eingestreut wurden, statt mich durch 5
Verschachtelungsebenen zu wühlen, die zur Fehlerbehandlung ohne goto
eingeführt wurden.


Thomas
--
Having trouble in Windows? Reboot!
Having trouble in Unix? Be root!