I think that is what he was meaning.

IT SHOULDN'T WORK THAT WAY, BUT IT DOES!!!

Re-Read his first email a little closer.

Jim Lucas
----- Original Message -----
From: "Michael Smith" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, July 11, 2003 3:44 PM
Subject: Re: [PHP] Private and protected variables in PHP 5?


> Hey,
>
> private vars are not accessible that way. This is the way it works...
>
> private $var is only usable by the class. You can't access it through
> $object->var.
>
> protected $var is only usable by the class if it was called directly,
> but not by any objects that are classes that are extended from the base.
> Example:
>
> class Parent {
> protected $var = "test";
> function blah($somevar) {
> ...
> }
> }
>
> class Child extends Parent {
> ...
> }
>
> $parent = new Parent;
> print $parent->var; //ouputs "test"
> $child = new Child;
> print $child->var; //outputs nothing
>
> as you can see $var is only accessible by objects that are specifically
> Parents, not Children.
>
> public vars are accessible by the class itself, ($this->var), derived
> classes, and by $class->var.
>
> HTH,
> Cheers!
> -Michael
> Paul Hudson wrote:
> > All,
> >
> > I'm toying with the new stuff available in PHP 5 (latest CVS), but I've
hit a
> > brick wall: both private and protected don't seem to work as I'd expect
them
> > to.
> >
> > Here's an example script:
> >
> > <?php
> >   class dog {
> >     // declare two private variables
> >     private $Name;
> >     private $DogTag;
> >
> >     public function bark() {
> >       print "Woof!\n";
> >     }
> >   }
> >
> >   // new class, for testing derived stuff
> >   class poodle extends dog {
> >     public function bark() {
> >       print "Yip!\n";
> >     }
> >   }
> >
> >   // I now create an instance of the
> >   // derived class
> >   $poppy = new poodle;
> >
> >   // and set its private property
> >   $poppy->Name = "Poppy";
> >   print $poppy->Name;
> > ?>
> >
> > For some reason, that script works fine - PHP doesn't object to me
setting
> > private variables in the derived class.  Yet if I use "$poppy = new
dog", the
> > script errors out as expected.  It's almost like PHP inherits the member
> > variables, but not the attached access control.
> >
> > For protected, here's another script:
> >
> > <?php
> >   class dog {
> >     // this next function is protected
> >     // viz, it should be available to dog
> >     // and its children
> >
> >     protected function bark() {
> >       print "Woof!\n";
> >     }
> >   }
> >
> >   class poodle extends dog {
> >     // nothing happening here
> >   }
> >
> >   $mydog = new poodle;
> >   // I now call the protected function
> >   $mydog->bark();
> > ?>
> >
> > That script errors out saying that I can't call the protected function
bark -
> > surely, being protected, it should be available in the poodle class too?
> >
> > Of course, it might be that these two pieces of functionality are not
yet
> > implemented in PHP, or, more likely, that I'm just misinterpreting the
> > documentation! ;)
> >
> > If you have any insight, please CC me into your response to the list.
> >
> > Thanks,
> >
> >
> > Paul
> >
>
>
> --
> Pratt Museum IT Intern
> All programmers are playwrights and all computers are lousy actors.
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to