phpbar.de logo

Mailinglisten-Archive

[php] =?ISO-8859-1?B?UmU6IFtwaHBdIEtsYXNzZW4tUGjkbm9tZW5l?=

[php] Re: [php] Klassen-Phänomene

robs-info php_(at)_phpcenter.de
Fri, 21 Jun 2002 11:53:54 +0200


Ulrich Hacke schrieb:


> Hallo Liste,
> beim Experimentieren mit Klassenstrukturen entstand folgender Code:

> --snip--------------------------------------
> class c {
>         var $datum;

>         function c() {
>                 $this->datum = date("d.m.Y");
>                 $this->zeit = date("H:i:s");
>         }
> }

> $x = new c();
> $e = "zeit";

echo $x->{$e};
> --snap--------------------------------------

> Funktioniert ganz wunderbar: ich kann zur Laufzeit meiner Klasse neue
> Eigenschaften zuweisen bzw. Eigenschaften nach dem Modell der variablen
> Variablen auslesen. Sieht in meinen Augen irgendwie unsauber aus

Ja, ganz sauber ist es nicht. Ist vielleicht ein wenig pingelich, aber
wenn es etwas mehr Code wird, kannst du dir sowas nicht erlauben.
Probiers mal so:

<?php
class c {
        //Interface
        var $datum;
        var $zeit;
                
        function c() {
          $dtJetzt=time();
          $this->datum = date("d.m.Y",$dtJetzt);
          $this->zeit = date("H:i:s",$dtJetzt);
        }
}

$x = new c();
$e = "zeit";

echo $x->{$e};
?>


> und ich war
> auch erstaunt, dass das überhaupt geht.

Wieso nicht, man könnte ja auch so schreiben, und schon ist es
offensichtlicher.
echo $x->{$e};
echo $x->{"zeit"};


> Dazu meine Fragen: ist das so
> gewollt oder (nur) ein Problem des Interpreters? Bug oder Feature? Kann ich
> mich darauf verlassen, dass solche Konstrukte auch in späteren PHP-versionen
> funktionieren?

Ist auf jeden Fall ein Feature und liegt darin begründet, wie
Variablen intern behandelt werden. Wenn nicht rigoros an PHP geändert
wird, geht das auch in Zukunft.

-- 
Gruß, Rob


php::bar PHP Wiki   -   Listenarchive