Re: private $foo

From: Date: Tue, 28 Mar 2006 22:17:58 +0000
Subject: Re: private $foo
References: 1 2 3 4 5  Groups: php.general 
Request: Send a blank email to php-general+get-232779@lists.php.net to get a copy of this message
Anthony Ettinger wrote:
On 3/28/06, Joe Henry <jhenry@celebrityaccess.com> wrote:
On Tuesday 28 March 2006 1:12 pm, Jochem Maas wrote:
<?php class Foo {
     private $foo = 'foo';
     function __get($k)
     {
             if (isset($this->{$k})) {
                     return $this->{$k};
             }
             throw new Exception("non existing property!");
     }
     function __set($k, $v)
     {
             if (isset($this->{$k})) {
                     $this->{$k} = $v;
                     return;
             }
             throw new Exception("non existing property!");
     }
} $f = new Foo; echo $f->foo,"\n"; $f->foo = "bar"; echo $f->foo,"\n";
Maybe I'm wrong, but I thought you couldn't use the "$f->foo" to access private variables from outside a class?
I think he means: echo $f->__get('foo'); $f->__set('foo', 'bar'); echo $f->__get('foo');
no, he doesn't. http://www.php.net/manual/en/language.oop5.magic.php should explain it, however the part about __get() and __set() isn't quite finished yet (and thus missing). Rest assured though, Jochem showed a correct way of handling this "problem", though PHP had a bug relating to recursive lookups when using isset() in combination with __get().

« previous php.general (#232779) next »