/usr/portage

Symbole in PHP emulieren 0

PHP bietet von Haus aus keine Symbole. Ist es in Sprachen wie Ruby möglich, Symbole als Methoden-Argumente zu verwenden, so entfällt diese Möglichkeit in PHP. Dabei bieten Symbole im Gegensatz zu Werten oftmals große Vorteile: sie ermöglichen API-Stabilität, auch wenn sich die Funktionalität einer Klasse beständig ändert, denn das Zuweisen eines Wertes kann in der Klasse bzw. Methode geschehen. Auch wenn sie PHP nicht mitbringt, gibt es eine Möglichkeit, solche Symbole zu emulieren.
Erst einmal ein Beispiel in Ruby:

class Bla
        def self.foobar( param )
                print “Here we are!\n” if param == :sym
        end
end

bla = Bla;
bla.foobar( :sym )

Nun bietet PHP seit der Version 5.0 bekanntermaßen ja Klassen-Konstanten, die sich für diesen Zweck recht praktisch missbrauchen lassen. Das bekannte Beispiel in PHP:

class Bla
{ const SYM = “bla”; public function foobar( $param ) { if( $param == Bla::SYM ) print “Here we are!\n”; }
}

$bla = new Bla;
$bla->foobar( Bla::SYM );


Nachteile hat das Verfahren kaum, nur dass die Parameterliste oftmals sehr lang wird, wenn mehrere Klassen-Konstanten als Argumente übergeben werden und sprechende Klassen- bzw. Parameternamen verwendet werden.

Filed under , , , , , , , & no comments & no trackbacks

Trackbacks

Trackback specific URI for this entry

No Trackbacks

Comments

No comments

Add a Comment & let me know what you think