If your attribute is private, not being able to see it (either for reading nor writing) from a sub-class if perfectly normal : private
means you attribute is private to the class it is defined in.
That's the difference between private and protected :
- private = accessible only for the one class it's declared in
- protected = accessible from any class that "is a" class of the type you'r declaring (super or sub-class)
- public = accessible from anyone
For more informations about this in PHP, see Visibilty in the manual.
You will probably find more information on the net about that, if necessary : it's one of the basics of Object-Oriented programming, and is true in other languages (like C++, for instance)
Search for keywords like "Visibility", "Encapsulation", or "Information Hiding", for instance -- in relation with OOP / Object-Oriented Programmation