Re: Inherit Methods

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi !

you have to defined protected $var.

 This is a example  where php5 OO model has a little ambiguities.
Thing a few in your  problem !, on de child class scope $var it's
private then when yo execute printVar(), you aren't executed on parent
scope you are calling a copie on child scope, then you don't have
access to $var. Only when you use parent scope throw
parent::printVar() , you realy calling the parent class instance into
your child then print result.

Then when you want to have a variable for being used on a public
inherit method you have to defined protected

On 8/8/05, Norbert Wenzel <mail@xxxxxxxxxxxx> wrote:
> Is it possible to run inherited methods in the scope of the child class?
>   In my case I have an abstract class called 'Company' and some child
> classes. There is a non abstract function in 'Company' which prints
> '$this->phoneList'. That function should be the same to all child
> classes, without rewritting it in every class.
> 
> I call the printing method via the child class like
> $childObject->printPhoneList();
> The call seems to be handed over to the parent class 'Company' which is
> fine. But the $this points to the phoneList of the abstract parent
> class. So the phoneList in the abstract class seems to be unset, since i
> have set the phone list in the child class.
> 
> Here's a short example, showing what I mean:
> 
> <?php
> 
> abstract class AbstractClass {
> 
>         private $var;
> 
>         public function printVar() {
>                 echo('var: ' . $this->var . '<br>');
>         }
> 
> }
> 
> class ConcreteClass extends AbstractClass {
> 
>         public function __construct($var) {
>                 $this->var = $var;
>         }
> 
>         public function printVarChild() {
>                 echo('var (child): ' . $this->var . '<br>');
>         }
> 
> }
> 
> $cl = new ConcreteClass(15);
> $cl->printVar();
> $cl->printVarChild();
> ?>
> 
> Output is:
> var:
> var (child): 15
> 
> 
> Has anyone an idea how to print the $var of the child, without copying
> the method in every child class?
> 
> thanks in advance,
> Norbert
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux