phpbar.de logo

Mailinglisten-Archive

[php] goto statements

[php] goto statements

Johannes Schlueter schlueter at phpbar.de
Die Aug 3 03:31:59 CEST 2004


Hi,

On Sunday 01 August 2004 12:23, Kai Wenk wrote:
> Hi,
>
> Johannes Schlueter wrote:
> >   - Eine Fehlerfunktion, die statt der "goto error" mit "return
> > my_error_function(db_error());" aufgerufen wird - auch nicht besonders
> > übersichtlich und wenn man im Fehlerfall mit mehreren Reosurcen Arbeiten
> > will eine lange Parameterliste
>
> Eine Fehlerbehandlung per Funktion, der am Besten noch der SQL-Statement
> und/oder die Datei- bzw. Zeilenangabe ( __ FILE __ / __ LINE __ )
> übergeben wird.

Führt aber, wenn man es mit mehreren Resourcen zu tun hat zu recht langen 
Paramterlisten in der Funktion und bei mehreren solcher Stellen muss man 
aufpassen keinen Namenskonflikt zu bekommen.

> Dies wäre mit goto: nicht möglich.

Das SQL-Statement zu bekommen wäre Möglich - ich bleibe ja im selben Scope und 
habe somit Zugriff auf die selben Variablen.
<?php
function do_something() {
    $sql= 'SELECT * FROM foo';
    $result = db_query($sql);
    if (!$result) {
        goto error;
    }
    /* ... */
    return true;

error:
    echo "Fehler bei $sql";
    return false;
}
?>

Auch wenn ich hier in zig Mails Goto "verteidige": Goto ist (in PHP) nicht 
umbedingt nötig gelegentlich aber ganz nett (insbesondere auch bei Parsern 
und automatisch generiertem Code...)

johannes
-- 
Johannes Schlüter
php::bar | Der Treffpunkt für Einsteiger und Profis   http://www.phpbar.de

php::bar PHP Wiki   -   Listenarchive