previous up contents next


Sprachelemente von PHP

PHP besitzt die üblichen Konstrukte einer Programmiersprache, wie sie beispielsweise aus C bekannt sind. Auch die Syntax ist stark an C angelehnt:

  1. Trennung von Anweisungen mittels Semikolon (;)
  2. Kommentare werden eingeleitet mittels //, /* Bla */ oder #
  3. Modularisierung ist mölich (via include)
  4. Datentypen:
    Wahrheitswerte $switch = TRUE
    Integer $i = 25
    Strings $name = Meier
    Vektoren $argv[0] = "egrep"
    $argv[1] = "-r"
    assoziative Arrays (Listing: [*]) $printed["Karl"] = 5 $printed["Hans"] = 9
    Fließkommazahlen $pi=3.14
    Objekte $pp = new Professor("Meier", "Psychologie")
    Resource nur interne Verwendung z.B. als Datenbankhandle

    \lstinputlisting[caption={assoziative Arrays k\uml onnen mit Strings oder Integern gleichzeitig indiziert werden
}]{include/assArray.php} assoziative Arrays können mit Strings oder Integern gleichzeitig indiziert werden

    Variablen werden stets mit einem $ eingeleitet. Der Datentyp einer Variablen wird normalerweise nicht vom Programmierer gesetzt, sondern während der Laufzeit im jeweiligen Kontext ausgewertet, d.h. es ist keine Deklaration notwendig. Dabei sind jedoch casts wie beispielsweise in C erlaubt. PHP geht dabei nach bestimmten festgelegten Regeln vor (siehe z.B. [7] Seite 164)

  5. Konstanten können mit dem Schlüsselwort define() erzeugt werden, wie z.B. in:
    define("PASSWORT", "t.zf<TZg")

  6. Operatoren: Die Operatoren sind analog zu C definiert.
    1. arithmetische Operatoren (/,*,+,-,\%,++,--)
    2. Bitoperatoren (&,|,~,>>,<<)
    3. Vergleichsoperatoren (==,!=, === (identisch), !== (nicht identisch),<,>,<=,>=)
      Die Identitätsvergleichsoperatoren dienen dazu, gleichzeitig sowohl den Datentyp, als auch den Inhalt der Variablen zu vergleichen, was aufgrund der automatischen Datentypkonvertierungen notwendig ist.
    4. Logische Operatoren (and , or, xor, &&, ||, !)
    5. Zuweisungsoperatoren (=,+=,-=,*=,/=,.=,%=)
    6. Zur Verkettung von Strings gibt es den zusätzlich eingeführten Operator ``.'' .
      $name = Meier; $anrede="Sehr geerter Herr".$name;
    7. Fehlerkontroll-Operator: Wird ``@'' vor einem Ausdruck angegeben, so wird ein Fehler, der möglicherweise entstehen würde, unterdrückt. Die globale Variable $php_errormsg wird mit einer Fehlermeldung gefüllt, jedoch nicht ausgegeben.
      (Beispiel zur Anwendung: $con=@mysql_connect(....);)

  7. PHP unterscheidet nicht zwischen Vektoren und assoziativen Arrays (Hash). Das selbe Array kann sowohl mit Nummern als auch mit Strings indiziert werden.

  8. PHP kennt Referenzen auf Variablen (wie z.B. C++) (siehe Listing: [*])

    \lstinputlisting[caption={Verwendung von Referenzen in PHP
}]{include/referenz.php} Verwendung von Referenzen in PHP

  9. Variable Variablen bzw. dynamische Variablen d.h. der Name einer Variablen kann verändert werden.
    $a="morgen"; $$a="heute"; jetzt ist $morgen == "heute"
  10. Variablen, die an ein PHP-Skript via Formular (POST) oder via Query String (GET) übergeben wurden, sowie Umgebungsvariablen (Environment) stehen als globale Variable zur Verfügung. Dabei ist es nicht notwendig, die mit GET erhaltenen Parameter zu entschlüsseln und in Variablen zu speichern. Vielmehr können die Variablen sofort im Skript verwandt werden. Dies kann jedoch auch zu Sicherheitslücken führen. (siehe [*])

  11. Es gibt die Kontrollstrukturen: if (else), while, do while, for, switch, foreach (ab Version 4), continue.
  12. Mit Hilfe der besonderen Befehle (Sprachanweisungen) require(filename) und include(filename) können andere Dateien in ein Skript geladen werden.
  13. Das Funktionskonzept von PHP unterstützt Call-by-value, Call-by-reference sowie Defaultargumente (wie in C++). Zu beachten ist, daß Funktionsnamen nicht case-sensitiv sind. Groß- und Kleinschreibung spielen also innerhalb von Funktionsnamen keine Rolle (Listing [*]).

    \lstinputlisting[caption={Gro\3- und Kleinschreibung spielt in Funktionsnamen keine Rolle
}]{include/date.php} Groß- und Kleinschreibung spielt in Funktionsnamen keine Rolle Zudem unterstützt PHP4 das late binding von Funktionen, was besagt, daß eine Funktion textlich vor ihrer Definition und Deklaration verwendet werden kann. Eine Besonderheit von PHP, im Gegensatz zu anderen Programmiersprachen, ist die Behandlung von globalen Variablen in Funktionen. Diese Variablen stehen innerhalb einer Funktion nicht automatisch zur Verfügung, sondern müssen erst bekannt gemacht werden: global "eineGlobaleVariable" und dann

     $eineGlobaleVariable = "Globale Aenderung";
    
    Alternativ kann auf globale Variablen über das Array GLOBALS zugegriffen werden:
     echo $GLOBALS["eineGlobaleVariable"]
    
    Ein weiteres Feature, das PHP unterstützt und in klassischen Programmiersprachen so nicht vorhanden ist, ist das Konzept der variablen Argumentenliste. Dabei können einer Funktion eine unbestimmte Anzahl an Parametern übergeben werden (siehe Listing [*]).

    \lstinputlisting[caption={In PHP4 werden variable Argumentlisten unterst\uml utzt
}]{include/variableArg.php} In PHP4 werden variable Argumentlisten unterstützt

  14. Objektorientiertes Programmieren ist mit PHP möglich. Es werden Klassen (Objekte) und Vererbung unterstützt (verwende das Schlüsselwort extends um eine Klasse zu erweitern). Erweiterte OO-Konzepte, die bisher nicht unterstützt werden, sollen in zukünftige Versionen von PHP integriert werden. Hierzu gehören die aus C++ bekannten Konzepte wie Overloading (überladen von Funktionen) und Redefinition (überschreiben von Funktionen in abgeleiteten Klassen). Zudem wird der Konstruktor der Eltern-Klasse in einer abgeleiteten Klasse nicht automatisch aufgerufen.
    Soll innerhalb einer Klasse auf eine Klassenvariable zugegriffen werden, so ist die Schreibweise $this->variable zwingend erforderlich (siehe Listing [*]).

    \lstinputlisting[caption={Beispiel f\uml ur eine Klassendefinition in PHP
}]{include/klasse.php} Beispiel für eine Klassendefinition in PHP

  15. PHP unterstützt auch Perl-kompatible reguläre Ausdrücke (Listing [*]).

    \lstinputlisting[caption={Beispiel f\uml ur regul\uml are Ausdr\uml ucke
}]{include/regexp1.php} Beispiel für reguläre Ausdrücke


previous up next
Rene Morschhauser 2002-02-03