Re: Inherit Methods

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

 



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


--
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