Читать книгу Programmieren mit PHP - Andreas Hitzig - Страница 8

Informationen zur Klasse

Оглавление

Benötigen Sie innerhalb des Programmablaufs Zugriff auf die einzelnen Methoden einer Klasse, nutzen Sie die Funktion get_class_methods(). Diese liefert Ihnen in einem Array alle Methoden der Klasse:

array get_class_methods ( mixed $class_name )

Als Parameter übergeben Sie den Namen der Klasse oder die Instanz eines Objekts. Tritt bei der Ausführung des Befehls ein Problem oder ein Fehler auf, liefert get_class_methods() den Wert false. Seit PHP 5 bekommen Sie alle Methodennamen so geliefert, wie sie definiert worden sind - die Groß- und Kleinschreibung wird entsprechend berücksichtigt.

In der Klasse meine_Klasse() definieren Sie zwei Methoden: meine_Funktion1 und meine_Funktion1 (Listing 2). Es gibt zwei alternative Methoden, wie Sie get_class_methods() einsetzen können: entweder direkt mit der Übergabe eines konkreten Klassennamens, oder Sie erzeugen als Übergabeparameter die Instanz einer Klasse. Bei der anschließenden Ausgabe der gespeicherten Werte im Array finde_Methoden_zur_Klasse erhalten Sie folgendes Ergebnis:

meine_Klasse

meine_Funktion1

meine_Funktion2

LISTING 2: GET_CLASS_METHODS()

class meine_Klasse {


function meine_Klasse()

{

return(true);

}


function meine_Funktion1()

{

return(true);

}


function meine_Funktion2()

{

return(true);

}

}


$finde_Methoden_zur_Klasse= get_class_methods('meine_Klasse');

$finde_Methoden_zur_Klasse= get_class_methods(new meine_Klasse());


foreach ($finde_Methoden_zur_Klasse as $Name_Methode) {

echo "$Name_Methode\n";

}

Die Funktion get_class_vars() ist ähnlich aufgebaut und liefert Ihnen als Rückgabewert die Vorgabeeigenschaften einer Klasse als Array. Die Struktur der Funktion sieht wie folgt aus:

array get_class_vars ( string $class_name )

Als Parameter übergeben Sie den Namen der gewünschten Klasse und erhalten als Rückgabewert ein Array mit den vorgegebenen Eigenschaftsvariablen im Format name_der_variablen => wert.

Gerade beim Zugriff auf externe Datenspeicher und Datenbanken ist oftmals eine Fehleroder Ausnahmebehandlung notwendig, falls beispielsweise die Verbindung nicht zustande kommt oder anderweitige Probleme entstehen. Dafür liefert Ihnen PHP 5 mit try...catch eine entsprechende Routine (Bild 3). Im Rahmen der Fehlerbehandlung können Sie für spezielle Ausnahmen eine konkrete Vorgehensweise festlegen, aber auch innerhalb eines Programmcodes mit throw() einen Ausnahmefall direkt auslösen. Die Struktur einer Ausnahmebehandlung sieht wie folgt aus:

class errorhandling extends Exception

{}

try {

Aktion_1();

}

catch (Exception $ausnahme_1)

{

// Behandlung des ersten Fehlers oder

der ersten Ausnahme

}

catch (Exception $ausnahme_2)

{

// Behandlung des zweiten Fehlers oder

der zweiten Ausnahme

}


PHP 5 bietet zahlreiche vordefinierte Ausnahmen an (Bild 3)

Die Struktur ist einfach erklärt: Es wird versucht, den Code innerhalb der try-Klammer auszuführen. Tritt ein Fehlerfall auf, soll dieser mit catch abgefangen werden und die Anwendung in einen definierten Endzustand überführt werden.

Bei einer bestimmten Situation löst die Anwendung einen Fehlerfall aus, beispielsweise wenn eine Variable nicht innerhalb eines erwarteten Bereichs ist. Dies geschieht mit Hilfe von throw() und wird innerhalb einer Ausnahmebehandlung entweder individuell für eine definierte Ausnahme oder allgemeingültig für alle zu einem Zustand ohne Absturz geführt.

Sie können auch verschiedene Klassen von Ausnahmen abfangen, indem Sie mehrere catch-Blöcke verwenden. Die Programmausführung wird, falls kein Fehler auftritt, nach dem letzten catch-Block fortgesetzt. Ausnahmen können auch innerhalb eines catch-Blocks ausgelöst und anschließend abgefangen werden.

Im Beispiel in Listing 3 wird überprüft, ob die Partygäste Getränke und, falls ja, die richtigen mitgebracht haben. Erwartet wird von den Gästen entweder ein Kasten Bier oder ein Kasten Mineralwasser. Zuerst wird eine leere Klasse für die Ausnahmebehandlung der Getränkeversorgung erzeugt. In der Klasse partygast wird anschließend festgelegt, welche Getränke abgemacht und erwünscht waren. Bringt der Gast keine Getränke oder die falschen mit, wird eine entsprechende Fehlermeldung ausgegeben und diese mit dem Fehlercode 10 versehen.

LISTING 3: FEHLERBEHANDLUNG

class verpflegungskatastrophe extends Exceptions {}


class partygast

{

public function getraenkemitbringen($getraenke){

if (!is_array ($getraenke) || $getraenke == 'Kasten Bier' ||

$getraenke == 'Kasten Mineralwasser') {

throw new verpflegungskatastrophe ('Du solltest Bier oder

Mineralwasser mitbringen!!!', 10);

}

else

{

$treffer = 'Prima :-) Jetzt kann die Party steigen';

return $treffer;

}

}

}


$paul = new partygast;


try

{

$willkommener_gast = $paul -> getraenkemitbringen ('Prosecco');

echo $willkommener_gast;

}

catch (verpflegungskatastrophe $Exception)

{

echo 'Code: '.$Exception -> getCode().'<br>';

echo 'Fehler: '.$Exception -> getMessage().'<br>';

echo 'Datei: '.$Exception -> getFile().'<br>';

echo 'Zeile: '.$Exception -> getLine().'<br>';

}

In der Programmroutine wird anschließend ein neues Objekt $paul erzeugt. Der Versuch, die Methode getraenkemitbringen zuzuweisen, wird durch try...catch abgesichert. Da sich der gute Paul nicht an die Vorgaben gehalten hat und eine Flasche Prosecco mitbringt, wird eine Ausnahme mit der Fehlernummer 10 ausgelöst. Diese wird im catch-Teil abgefangen. Die Informationen der Ausnahme stammen aus der zuvor erzeugten leeren Klasse verpflegungskatastrophe. Auf diese können Sie anschließend über die Methoden und Eigenschaften der Exception-Klasse zugreifen und diese ausgeben.

Programmieren mit PHP

Подняться наверх