No! This won't work. There are two ways in which you can get an overridden
method to call the method in its super-class, these are by using the
following constructs:
1) parent::
2) <classname>::
So, you could do the following:
1)
class B extends A {
function something() {
// some other actions
parent::something(); // calls A::something
}
}
or
2)
class B extends A {
function something() {
// some other actions
A::something(); // calls A::something
}
}
I've experienced PHP getting confused when using the parent:: construct. If
you have an object that is 3 levels deep in sub-classing and each sub-class
overrides the same method then the parent:: construct in the level 2 object
sometimes calls the level objects method - ad infinitum. This seems to be a
bug with the parent:: construct.
i.e.
class A{
function foo(){
print "A";
}
class B extends A{
function foo(){
parent::foo();
print "B";
}
class C extends B{
function foo(){
parent::foo();
print "C";
}
$bar=new C();
$bar->foo();
// Output would be:
CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB..............
because parent::foo() in class B incorrectly resolves to B::foo().
So, I normally use the explicit class name construct, giving:
class A{
function foo(){
print "A";
}
class B extends A{
function foo(){
A::foo();
print "B";
}
class C extends B{
function foo(){
B::foo();
print "C";
}
$bar=new C();
$bar->foo();
// Output would be:
CBA
Hope this helps.
Neil
-----Original Message-----
From: Alexander Deruwe [mailto:[EMAIL PROTECTED]]On Behalf Of Alexander
Deruwe
Sent: 03 September 2001 14:51
To: A. op de Weegh; [EMAIL PROTECTED]
Subject: Re: [PHP] How to call a member from the base class?
On Monday 03 September 2001 09:47, A. op de Weegh wrote:
> How do I make sure in the something() member of class B, that the parent
> class member something() is also called? Can I do this:
Hello there, person with the same name as self, :)
class B extends A {
function something() {
// some other actions
$this->something(); // calls A::something
}
}
I've used this code for calling base class constructors. These ofcourse have
different names, while your functions are both called the same. I don't
think
that should make any difference, though.
ad.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]