quakenet:#php Tutorial

Author: Progman, zuletzt bearbeitet von progman @ 2004/02/15 00:11:47

Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.

Einrücken von Programmcode

  1. Was ist einrücken?
  2. Warum einrücken?
  3. Start und Ende von PHP
  4. Einrücken bei if-Anweisungen
  5. Einrücken bei Schleifen
  6. Einrücken bei switch
  7. Einrücken in Zuweisungen
  8. Beispiel für richtiges Einrücken
  9. PEAR Coding Standard

1. Was ist einrücken?

Beim Parsen eines PHP-Dokument ignoriert der PHP-Interpreter Whitespaces wie neue Zeile, Tabulator und Leerzeichen. Das heißt, dass wir an beliebigen Stellen - außer mitten in Ausdrücken, Variablennamen und Funktionsnamen - Leerzeichen und Zeilenumbrüche hinzufügen können. Mit solchen Leerzeichen und Umbrüchen können wir den Code besser Strukturieren und übersichtlicher gestalten.

2. Warum einrücken?

Bei verschachtelten If-Anweisungen und Schleifen sollte man auf jedenfall den Code eindrücken. Einrücken ist der Fachbegriff wenn man vor einer Programmzeile eine bestimmte Anzahl von Leerzeichen schreibt. So könnte ein Script aussehen, was nicht eingerückt wurde.

<?php
if(bedingung)
{
echo(
"hier");
while(
bedingung)
{
echo(
"bla");
echo(
"du");
for(
$i=0;$i<10;$i++)
{
switch(
$i)
{
case
1:
break;
case
2:
case
3:
case
5:
tu_dies();
break;
case
4:
if(
bedingung)
echo(
"hi");
else
{
do
{
mach_was();
}
while(
bedingung);
}
default:
break;
}
}
}         
echo(
"bla");
if(
bedingung)
echo(
"hi");
}
else
{
for(
$i=0;$i<10;$i++)
echo(
$i);
}
?>

Wenn man so einen Code schreibt, ist es unmöglich die Verschachtelungen zu überschauen. Man weiß nicht wo die eine Schleife/Abfrage anfängt und die andere aufhört. Die Folge ist ein Parse Error, denn es kann gut passieren, das hier eine geschweifte Klammer fehlt, der sogenannte Klammerfehler. Dies ist z.b. der Fall wenn man ein Fehler in der letzten Zeile, wo das </html> steht, bekommt. Dann hat man irgentwo eine Klammer vergessen. Bei dem Beispielcode oben würde mich das nicht wundern, und man würde den Fehler nie finden.

Deswegen sollte man einige Regeln zum Einrücken vom Programmcode beachten.

3. Start und Ende von PHP

Ein PHP-Dokument startet ja mit <?php. Es hat sich eingebürgert den nachstehende Code in einer neuen Zeile beginnen zu lassen und diesen dann 4 Leerzeichen vom linken Rand entfernt zu schreiben. Dies würde dann so aussehen.

<?php
    mach_was
();
    
mach_dies();
    
// ...
?>

Das schließende PHP-Element ?> kommt auch in eine neue Zeile und wird in diesem Fall nicht eingerückt, es steht ganz links.

4. Einrücken bei if-Anweisungen

Unabhängig davon wieviele Anweisungen durch die If-Anweisung gesteuert sollte man, und wird auch vom PEAR-Standard empfohlen, immer geschweifte Klammern für den Programmblock benutzen. Die offene geschweifte Klammer kommt nach einem Leerzeichen hinter dem if, die geschlossene geschweifte Klammer kommt in einer einzelnen Zeile auf höhe der If-Abfrage. Dies sieht dann so aus:

<?php
    
if (bedingung) {
        
mach_dies();
    }
?>

Wenn sie else und elseif verwenden, sollten sie das else/elseif mit einem Leerzeichen getrennt hinter der geschlossenen geschweiften Klammer schreiben.

<?php
    
if (bedingung) {
        
mach_dies();
    } elseif (
bedingung1) {
        
mach_jenes();
    } else {
        
mach_das();
    }
?>

5. Einrücken bei Schleifen

Das Einrücken bei Schleifen ist genauso wie bei If-Anweisungen.

<?php
    
while (bedingung) {
        echo
"bla";
        echo
"bli";
    }

    do {
        
bla();
        
bli();
    } while (
bedingung2);

    for (
$i=0; $i<10; $i++) {
        echo
$bla;
        echo
$bli;
    }

    foreach (
$array as $key => $var) {
        echo
"key:".$key."<br />\n";
        echo
"var:".$var."<br /><br />\n";
    }
?>

Im for und foreach-Teil sollten sie zusätzliche Leerzeichen einfügen um die einzelnen Bereiche wie Durchlaufbedingung zu erkennen.

6. Einrücken bei switch

Bei einer switch-Anweisung werden die geschweiften Klammern wie bei den anderen Kontrollstrukturen auch an den entsprechenden Positionen geschrieben.

<?php
    
switch ($var) {
        
// ....
    
}
?>

Die case's und ggf. auch ein default: kommen in die geschweiften Klammern, jedes für sich in eine eigene Zeile.

<?php
    
switch ($var) {
    case
'x':
    case
'bla':
    case
4:
    default:
    }
?>

Wollen sie unter einem case dann etwas Programmcode stehen haben, so ist dieser Programmcode 4 Leerzeichen vom case eingerückt. Nach einen break; folgt eine Leerzeile.

<?php
    
switch ($var) {
    case
'x':
    case
'bla':
        echo
"mach das";
        break;

    case
4:
        echo
"bla";
        break;

    default:
        
tu_was();
    }
?>

7. Einrücken in Zuweisungen

Bei einer Zuweisung muss links und rechts vom Zuweisungsoperator nicht genau 1 Leerzeichen sein, sondern es können auch mehrere Leerzeichen verwendet werden. Doch mindestens 1 sollten sie verwenden damit sie den Zuweisungsoperator auch erkennen.

<?php
    $name
= "Max";
    
$nachname = "Musterman";
    
$adresse = "Hausweg 13";
    
$telefonnummer = "555-1234";

    
// So wäre es Möglich, doch es geht auch lesbarer

    
$name          = "Max";
    
$nachname      = "Musterman";
    
$adresse       = "Hausweg 13";
    
$telefonnummer = "555-1234";
?>

Bei Zuweisungen müssen sie nicht so einrücken, bei Schleifen und if/switch-Abfragen hingegen empfehle ich es ganz besonders.

8. Beispiel für richtiges Einrücken

Wir nehmen mal das Beispiel oben und rücken es richtig ein.

<?php
if(bedingung)
{
echo(
"hier");
while(
bedingung)
{
echo(
"bla");
echo(
"du");
for(
$i=0;$i<10;$i++)
{
switch(
$i)
{
case
1:
break;
case
2:
case
3:
case
5:
tu_dies();
break;
case
4:
if(
bedingung)
echo(
"hi");
else
{
do
{
mach_was();
}
while(
bedingung);
}
default:
break;
}
}
}         
echo(
"bla");
if(
bedingung)
echo(
"hi");
}
else
{
for(
$i=0;$i<10;$i++)
echo(
$i);
}
?>

Dies wird zu.

<?php
    
if (bedingung) {
        echo
"hier";
        while (
bedingung) {
            echo
"bla";
            echo
"du";
            for (
$i=0; $i<10; $i++) {
                switch(
$i) {
                case
1:
                    break;

                case
2:
                case
3:
                case
5:
                    
tu_dies();
                    break;

                case
4:
                    if(
bedingung) {
                        echo
"hi";
                    } else {
                        do {
                            
mach_was();
                        } while(
bedingung);
                    }
                default:
                    break;
                }
            }
        }
        echo
"bla";
        if(
bedingung) {
            echo
"hi";
        }
    } else {
        for(
$i=0; $i<10; $i++) {
            echo
$i;
        }
    }
?>

Ihr könnt bei dieser Schreibweise sofort sehen ob ihr irgendwo eine Klammer vergessen habt. Ihr könnt auch sofort sehen, welcher Befehl noch z.B. zu einem if gehört und welcher nicht.

9. PEAR Coding Standard

Auf der Homepage von PEAR gibt es ein Kapitel PEAR Coding Standards. Dort wird erklärt, wie man sein Programmcode richtig einrücken sollte.

Fragen zum aktuellen Thema

  1. Keine Fragen
Keine Fragen

Für dieses Thema gibt es keine Übungsfragen.

Nach oben