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

Reply via email to