ID:               34924
 Comment by:       stochnagara at hotmail dot com
 Reported By:      axo at axolander dot de
 Status:           Open
 Bug Type:         Class/Object related
 Operating System: UNIX
 PHP Version:      5.0.5
 New Comment:

This bug is also present in latest 5.1 snap.


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

[2005-10-20 02:22:06] axo at axolander dot de

Description:
------------
i'm often making heavy use of the decorator pattern.
while this works in c++ or java, php tells me the 'protected' context
does not work.

how's this to interpret?

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

abstract class A {      
        protected abstract function func();
}

class Decorator extends A {

        private $_decorated;
        
        public function __construct(A $a) {
                $this -> _decorated = $a;
        }
        
        protected function func() {
                $this -> _decorated -> func();
        }       
        public function doCall() {
                $this -> func();
        }
        
}

class ASmall extends A {
        protected function func() {
                printf("%s::%s called!\n",__CLASS__,__FUNCTION__);
        }
}

$a = new ASmall();
$dec = new Decorator($a);
$dec -> doCall();

die();

Expected result:
----------------
ASmall::func called!

Actual result:
--------------
<br />
<b>Fatal error</b>:  Call to protected method ASmall::func() from
context 'Decorator' in <b>fileName</b> on line <b>12</b><br />


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


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

Reply via email to