Re: Inherit Methods

From: Date: Mon, 08 Aug 2005 12:34:34 +0000
Subject: Re: Inherit Methods
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-220217@lists.php.net to get a copy of this message
Norbert Wenzel 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 {
^ seeing as you are using the abstract keyword you must be using php5.
    which supports the 'parent' keyword but that is not what you want right now...
    private $var;
      get rid of the 'private' here and replace it with 'protected'
        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


« previous php.general (#220217) next »