Alan, Yes, those are the same results I'm getting. I'm running the latest CVS.
AFAIK, printing "Poppy" shouldn't happen - the variable should be private. --Paul On Friday 11 Jul 2003 11:19 pm, Alan D'Angelo wrote: > Hello, > In my PHP5 installation the first example print Poppy, > but the second return > Fatal error: Call to protected method dog::bark() from context '' in > c:\appserv\www\test\mailingphp50.php on line 18 > > In my previous installation oh PHP5, private variable worked well ... > PHP 5 is one beta, try with an next snapshot. > > > Alan > > > ----- Original Message ----- > From: "Paul Hudson" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Friday, July 11, 2003 11:21 PM > Subject: [PHP] Private and protected variables in PHP 5? > > > 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 > > > > -- > > 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