Edit report at https://bugs.php.net/bug.php?id=62045&edit=1
ID: 62045 Updated by: [email protected] Reported by: gonzalo123 at gmail dot com Summary: public access to a protected method Status: Not a bug Type: Bug Package: Class/Object related Operating System: Linux PHP Version: 5.3.13 Block user comment: N Private report: N New Comment: read: "is the same in" Previous Comments: ------------------------------------------------------------------------ [2012-05-16 14:14:39] [email protected] Right. But it doesn't change anything. The type is only important to decide what the foo() method is, and foo() is AnotherClass and OneClass. ------------------------------------------------------------------------ [2012-05-16 13:15:57] gonzalo123 at gmail dot com $this->object is not an instance of OneClass. $this->object is an instance of AnotherClass (look at the constructor). ------------------------------------------------------------------------ [2012-05-16 11:36:49] [email protected] $this->object is an instance of OneClass. $this->object->foo() is called. foo() is protected and was defined in the context of OneClass. The access is done in the context of AnotherClass. AnotherClass is a subclass of OneClass (the context where foo() was defined). Therefore access is granted. I don't know what's your problem here. ------------------------------------------------------------------------ [2012-05-16 09:00:32] gonzalo123 at gmail dot com But we are not accesing OneClass::foo. This access is allowed beacause of the extends,we should not have access to use $this->object->foo(); $this is an instance of OneClass (it extends AnotherClass) but $this->object (we load it with DI) is an instance of AnotherClass. foo is protected here and we are accesing as a public method. ------------------------------------------------------------------------ [2012-05-16 08:51:07] [email protected] Access is granted on a class, not instance basis. This is by design. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=62045 -- Edit this bug report at https://bugs.php.net/bug.php?id=62045&edit=1
