Gegen Bilderklau - Das Original

Registrierung Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Statistik Chat Karte Zur Startseite

Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Tutorials und FAQ » [PHP & MySQL] [Mini-Tutorial] PHP Labels » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen [Mini-Tutorial] PHP Labels
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
brain_surgery brain_surgery ist weiblich
skype: energon-soup


images/avatars/avatar-52044.png

Dabei seit: 09.02.2005
Beiträge: 973
Herkunft: austria
Name: Nathalie

[Mini-Tutorial] PHP Labels Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Leute. smile
Man hat schon seit einiger Zeit nichts mehr von mir gehört hier, aber nachdem ich gestern ein kleines Projekt mithilfe von Labels einfacher lösen konnte, dachte ich mir, ich teile mal meine Erkenntnisse.

PHP Labels...was ist das?
Durchaus umstritten von manchen, sind Labels ein guter Weg, in deinem Code "Lesezeichen" zu setzen, zu denen du (fast) beliebig springen kannst. Die Syntax dafür ist bestechend einfach:

Ein Label definieren
php:
1:
meinlabel:

Das wars! Das ist tatsächlich alles, was du tun musst. Du denkst dir einen Namen für dein Lesezeichen aus, und schreibst diesen, gefolgt von einem Doppelpunkt, in deinen Code. Ab hier beginnt der Teil des Scripts, der ausgeführt wird, wenn du dein Label aufrufst. Bitte beachte, dass wie auch bei Variablennamen der Name frei von unerlaubten Sonderzeichen und aussagekräftig sein sollte!
Auch sollte das Label nur an einer Stelle im Code vorkommen. Mehrere Lesezeichen brauchen eigene Namen, damit der Interpreter weiß, zu welchem der Labels er springen soll.

Zum Label springen
php:
1:
goto meinlabel;

Auch das ist einfach! An einer beliebigen Stelle in deinem Code schreibst du das Stichwort "goto" gefolgt vom Namen deines Labels und einem Strichpunkt. Wenn der Interpreter diesen Befehl im Code erreicht, ignoriert er, was danach kommt und springt stattdessen zum gleichnamigen Label.
Anders als die Labels selbst, die einzigartig sein müssen, kannst du beliebig viele goto Aufrufe zum selben Label machen. Alle Wege führen nach Rom. smile

Okay, und wofür ist das nun gut?
Bild: » xkcd
Labels sollten niemals eine klare und geordnete Programmstruktur ersetzen. Sie können jedoch praktisch sein, um "Abkürzungen" zu nehmen, oder situationsabhängig Code zu ignorieren, wenn eine if-Anweisung dafür zu aufwändig oder nicht passend wäre. Auch kann man aus stark verschachtelten Schleifen oder Bedingungen springen.

Anwendungsbeispiel: Zum Footer springen: Label statt exit;
Wenn du ein wenig mit PHP gearbeitet hast, kennst du vielleicht: Du möchtest zum Beispiel eine Fehlermeldung statt des Contents anzeigen, oder einem nicht eingeloggten User den Zugriff verweigern.
In den meisten Fällen macht man dies mit einem einfachen exit; Befehl: Das Lesen des Codes wird abgebrochen. Leider wird dann aber auch das restliche HTML nicht gelesen...unter Umständen verschwinden Footer der Seite oder andere Teile des Layouts.
Nun könnte man den Footer nach jedem exit manuell einbauen (zB. durch ein Include), aber hier kommen Labels ins Spiel.
Setzt du zum Beispiel am Ende des Contents (da, wo der Rest der Seite beginnt) ein Label, dann kannst du, anstatt exit zu benutzen, immer zu diesem Label springen, wenn der Rest des Contents nicht ausgegeben werden soll.

Was noch zu beachten ist!
Mit goto kannst du zwar aus while-Schleifen und if-Zweigen herausspringen, hineinspringen ist aber nicht möglich! (Selbes gilt für andere Schleifen und Bedingungstypen wie for und switch.)
Wenn du einfach "nur" aus einer if- oder while-Anweisung aussteigen willst, und der Code danach normal weiter ausgeführt werden soll (oder die Schleife/Bedingung nicht verschachtelt genug ist, um ein Label zu rechtfertigen), verwende bitte break!
Es ist auch nicht möglich, in ein anderes Dokument oder aus einer Funktion heraus zu springen.

Das wars auch schon! Ich hoffe der eine oder andere findet es hilfreich. smile Hier noch der Link zum PHP Manual, für die, die etwas genauer nachlesen möchten: goto im Detail.
Mfg

__________________
Da ich selten bis gar nie sehe, wenn man mir PNs schreibt, bitte über Skype melden, wenn es ein Anliegen gibt! smile
14.09.2013 11:48 brain_surgery ist offline E-Mail an brain_surgery senden Homepage von brain_surgery Beiträge von brain_surgery suchen Nehmen Sie brain_surgery in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Tutorials und FAQ » [PHP & MySQL] [Mini-Tutorial] PHP Labels

Impressum

Forensoftware: Burning Board, entwickelt von WoltLab GmbH