What do you mean by, "without using a getter function"
? If you extend Foo and override bar's getter method, and if bar is private, then yes you can find out when it is accessed.
This is one reason why properties should all be private, so that you the programmer have full control over what is seen, by whom, and what can change.