Alan,

> I think what you are getting at is that you can set 'private' variable
> from outside.. - with no warnings etc.

Yup.

> so if you want a warning when you set/create a variable with the same
> name as the private - use protected...
> Or am I missing the point on what you expected..?

I was expecting setting a private variable to error out.  Protected works as 
you say - it errors out as expected.  But surely private should error also - 
inherited classes inherit private variables, but they can't manipulate them 
(or at least so I thought).

This code:

<?php
  class dog {
    private $Name;
    protected function bark() {
      print "Woof!\n";
    }
  }

  class poodle extends dog {
    // nothing happening here
  }

  $mydog = new poodle;
  $mydog->Name = "Poppy";
  var_dump($mydog);
?>

Outputs this:

object(poodle)#1 (2) {
  [""]=>
  NULL
  ["Name"]=>
  string(5) "Poppy"
}

I'm not sure what the [""]=>NULL is, but it isn't there if I shift $Name into 
the poodle class and make it public.


--Paul

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to