php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.05.2008, 20:58  
Neuer Benutzer
 
Registriert seit: 02.11.2007
Beiträge: 11
Chrissi befindet sich auf einem aufstrebenden Ast
Standard Goto in PHP6

Moin,

hab gefunden, dass goto anscheinend in PHP6 eingeführt werden soll.
Zu sehen hier: PHP: Liste der reservierten Wörter - Manual
Goto ist als reserviert in PHP6 eingetragen.

Meine Frage ist jetzt: Wozu braucht man son Müll, der vor Jahrzenten mal üblich war?

(mal nen Zitat dazu ausm Chat..)
Zitat:
(21:56:2 (Ryuzaki) hm... das mit dem goto in php is schon seltsam...
(21:56:47) (matze|) du bist seltsam
(21:56:50) (Ryuzaki) was soll man mit dingen, die vor 30 jahren ueblich waren?...
(21:57:00) (@Chrissi) jop
(21:57:41) (@Chrissi) naja, hoffen wir mal, dass sie irgendwas innovatives dabeigebastelt haben, um nen grund für den einbau von goto zu haben...
(21:57:42) (Ryuzaki) ich glaub, da ham die php-entwickler muell gebaut ^^
Gruß
Chrissi

(hoffentlich im richtigen Forum gepostet...)
Chrissi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.05.2008, 21:23  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Ich weiß es nicht. Aber soweit ich weiß, wurde diese Überlegung wieder verworfen und stattdessen auf Labels bei break-Anweisungen gesetzt (hoffe, ich habe das richtig mitbekommen).
Ich glaube, der Wunsch nach Goto kam aus der Community (wohl alles Oldschool-Programmierer), sollte allerdings nicht im konventionellen Sinne eingesetzt werden, sondern eher zu Fallunterscheidung. Wie die sich das vorgestellt haben, darfst du mich jetzt aber nicht fragen.
Aber selbst wenn die es einführen würden, müsste man es ja nicht benutzen.
Manko10 ist offline  
Alt 15.05.2008, 21:29  
Neuer Benutzer
 
Registriert seit: 02.11.2007
Beiträge: 11
Chrissi befindet sich auf einem aufstrebenden Ast
Standard

Habs gefunden... halleluja, wer brauchtn son Müll?
PHP Bugs: #29287: Request: Line labels and goto
Chrissi ist offline  
Alt 15.05.2008, 22:01  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Grummel...
Ich gebe dem Typen ja recht: "Code ohne goto ist nicht automatisch gut". Stimmt, hat er recht. "Man kann Code auch ohne for-Schleifen und switch-Statements programmieren": stimmt auch, man kann ja stattdessen while und if/elseif/else benutzen (auch wenn es in vielen Fällen Dummsinn wäre).
"Deshalb sollte man goto einführen, weil es manchmal der beste Weg ist": stimmt nicht, ebenso, wie man auf switch und while verzichten kann, kann man auf goto verzichten. goto hat dazu die blöde Eigenschaft, den Code unleserlich zu machen und das haben andere Sprachkonstrukte nicht oder nur bedingt (lange switches werden z.B. unleserlich, man sollte da eher if/elseif/else benutzen - goto macht den Code aber nicht nur unleserlich, sondern vor allem schwer verständlich und wartbar sowie fremdprogrammiererunfreundlich).

Manman, die Welt läuft rückwärts. Demnächst arbeiten wir auch wieder alle mit Windows 3.1, wenn das so weiter geht.

Geändert von Manko10 (15.05.2008 um 22:07 Uhr).
Manko10 ist offline  
Alt 16.05.2008, 08:33  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich finde goto an manchen Stellen sehr praktisch. Richtig eingesetzt verringert es gerade unnötig komplizierten und verschachtelten Spaghetti-Code.
Nach etwas Zeit zum Eingewöhnen finde ich zum Beispiel auch die Lösung in C# gut, dass case Blöcke keinen fall through mehr haben, sondern explizit mit goto angesprungen werden müssen. Und man kann auch nicht beliebig wild mit goto herumspringen, aber zum Beispiel aus (tief) verschachtelten Schleifen heraus. Und genau auf diese beide Fällen wird auch in #29287 hingewiesen.

Geändert von David (16.05.2008 um 09:43 Uhr).
David ist offline  
Alt 16.05.2008, 13:52  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Um aus Schleifen herauszuspringen fände ich es sinnvoller, einen Parameter zu break hinzuzufügen, mit dem man regulieren kann, aus wie vielen übergeordneten Schleifen man herausspringen will. Also z.B. break 3 um diese und die beiden übergeordneten Schleifen abzubrechen.
Eine goto wäre meiner Meinung nach ziemlich unnötig. Bisher habe ich es immer geschafft, meinen Code so umzuformen, dass ich immer schön links bleibe.
Aus anderen Sprachen kenne ich noch ein Gosub, das nach der Ausführung wieder zurückkehrt. Also die entschärfte Version dessen. Aber auch nicht so das Wahre.
Das ausbleiben des Fallthroughs sehe ich mit gemischten Gefühlen. Ganz abgesehen davon, dass es Entwickler anderer Sprachen vewirrt (was aber relativ egal ist) nutze ich switch-Konstrukte oft bewusst mit eben diesem Fallthrough. Aber ich kenne mich in C# jetzt nicht genug aus, dass ich das beurteilen könnte. Vielleicht gibt es ja auch ein continue oder ein fall oder was weiß ich, um weiterzugehen.
Letztendlich ist das Springen in switches mit einem beliebigen Schlüsselwort aber etwas anderes als Goto (auch wenn es denselben Namen hat). Goto ist eine Anweisung, mit der man wild im Code hin- und herspringen kann. Wenn es sich aber wie in Java nur um Labels handelt, dann wäre es sogar ein akzeptables Konstrukt. Alles andere finde ich sinnlos und unnötig. Gefundenes Fressen für Anfänger und Schreiberlinge von Anfänger-Tutorials (eben die, die HTML-Tutorials schreiben, in denen Frames angepriesen werden).

Geändert von Manko10 (16.05.2008 um 13:56 Uhr).
Manko10 ist offline  
Alt 16.05.2008, 14:31  
Erfahrener Benutzer
 
Registriert seit: 29.02.2008
Beiträge: 102
Thomas befindet sich auf einem aufstrebenden Ast
Standard

Hi,

Das Durchfallen lassen bei Switches ist aber im Grunde auch so ein "unsauberes" Konstrukt wie ein goto.

Gruß Thomas
Thomas ist offline  
Alt 16.05.2008, 14:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Aber das Ausführen mehrer Blöcke kann sehr praktisch sein und Redundanzen vermeiden. Deshalb ja eben das goto zum Anspringen anderer Labels im selben Switch.
David ist offline  
Alt 16.05.2008, 14:56  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Das Goto sollte auf jeden Fall auf einen Codeblock beschränkt sein. Das willkürliche Springen durch den gesamten Code wäre einfach...ähh...schlecht.
Außerdem würde ich nicht sagen, dass es so unsauber ist. Sauber ist es vielleicht nicht, aber nicht so unsauber wie ein Goto. Immerhin kann man mit Goto leicht Spaghetti-Code erzeugen.
Manko10 ist offline  
Alt 16.05.2008, 15:01  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
einen Parameter zu break hinzuzufügen, mit dem man regulieren kann, aus wie vielen übergeordneten Schleifen man herausspringen will. Also z.B. break 3
Das ist bereits so. Die Nachteile werden in der Anfrage beschrieben: Du änderst etwas am umliegenden Code und es hat Auswirkungen auf die (eigentlich) Blackbox "Innen", ohne dass Parameter der Blackbox geändert werden. Irgendeine Form von Beschränkung gerade im globalen Scope halte ich aber auch für notwendig.
David ist offline  
Thema geschlossen


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP6: kann einer was mit dieser fehlermeldung anfangen? brian johnson PHP Tipps 2008 8 29.05.2008 14:25
Fehler missing parameter: goto - phpmyadmin Lindwyrm Datenbanken 1 01.08.2007 16:15
php6 ~ eure vorstellungen/wünsche notyyy Off-Topic Diskussionen 16 26.06.2006 11:38
goto funktion??? PHP Tipps 2005 8 27.04.2005 14:37
Goto Befehl bei PHP ? PHP Tipps 2004 5 17.09.2004 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
goto php reserviert

Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum