phpbar.de logo

Mailinglisten-Archive

[php] erzeugt call_user_method(...) ein neues objekt?

[php] erzeugt call_user_method(...) ein neues objekt?

Alexander Meurer php_(at)_phpcenter.de
Tue, 29 Jan 2002 13:35:29 +0100


Hallo Frieder,

die Function "test" extistiert nicht erst "zur Laufzeit".

   function run () {

     $this->var = "foo";
     print $this->var;   // => foo
     $this->test ();
     print $this->var;   // => bar

   }

Ciao
   Alex

> ich hab folgendes problem. ich brauche die funktion
> call_user_method(...), um innerhalb eines objektes member-funktionen
> aufzurufen, die erst zur laufzeit existieren. diese methoden sollen dann
> attribute des objektes verändern, und diese veränderung soll beibehalten
> werden.
>
> ------------>8-----------
> class abc
> {
>  var $var;
>  ...
>  function test()
>  {
>   ...
>   $this->var = "bar";
>  }
>  ...
>  function run()
>  {
>   ...
>   $method = "test";
>   $this->var = "foo";
>   echo $this->var;        // zeigt logischerweise "foo"
>   call_user_method($method, $this);
>   echo $this->var;        // zeigt interessanterweise immer noch "foo"
>   ...
>  }
> }
> ------------8<-----------
>
> meine frage: erzeugt call_user_method(...) ein neues objekt? wenn ja,
> wie kann das vermieden werden?
> eine möglichkeit gibt's, die ist aber nicht sauber:
>  function test() {... return $this; }
>  function run() {... $this = call_user_method(...); }
>
> kennt noch jemand eine bessere möglichkeit?


php::bar PHP Wiki   -   Listenarchive