ID:               43083
 Updated by:       [EMAIL PROTECTED]
 Reported By:      purpurby at gmail dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: RedHat
 PHP Version:      5.2.4
 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

First part is perfectly right. As binding happens at compile time only
relevant part is that C is-a A, hence inside C calls to A's protected
members are fine. The other thing is a bit odd since technically C and B
are different things. However what you call is inside A and both have A
as a common root, hence that is fine as well.


Previous Comments:
------------------------------------------------------------------------

[2007-10-23 14:22:52] purpurby at gmail dot com

Description:
------------
Availability to call protected method from outside class or its
descendants.

Reproduce code:
---------------
<?php

class a
{
  protected function aa()
  {
    echo "a-aa\n";
  }
}

class b extends a
{
  protected function aa()
  {
    echo "b-aa\n";
  }  
}

// Extends is affects on the behaviour:
//   - When "c" extends the "a" - not correct behaviour: working as in
"Actual result"
//   - When "c" NOT extends the "a" - correct behaviour: working as in
"Expected result"
class c extends a 
{
  public function cc()
  {
    $obj = new a();
    $obj->aa();
    
    $obj2 = new b();
    $obj2->aa();
  }

}

$c = new c();
$c->cc();

?>

Expected result:
----------------
Fatal error: Call to protected method a::aa() from context 'c'

Actual result:
--------------
a-aa
b-aa


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=43083&edit=1

Reply via email to