Hi List,
Sorry if this is the wrong list for this kind of stuff.. I'd be happy to
re-post this to the users mailing list.
With the recent updates that will raise E_STRICT
on static calls that
are non static, how do we properly do the following..
I have a class named 'GrandParent' a class named 'Parent' and a class
named 'Child'
GrandParent has a constructor, Parent overrides it and Child does too..
What if I want to call GrandParent's constructor from the child?
Most languages allow this through casting the class into the ancestor
and call then call the method, but I can't do this with PHP, or can I ?
The other solution (right now) would be GrandParent::__construct(), but
this is not OOP anymore.. So it seems kind of weird that we get limited
in functionality, for OOP-ness, but not adding the functionality to
solve common design problems that we're raised by introducing this..
Will we get casting in the future?
Evert
adding parent::__construct() in the constructors of both Parent and
Child should do what you want.
Jasper
Evert | Rooftop wrote:
Hi List,
Sorry if this is the wrong list for this kind of stuff.. I'd be happy to
re-post this to the users mailing list.With the recent updates that will raise
E_STRICT
on static calls that
are non static, how do we properly do the following..I have a class named 'GrandParent' a class named 'Parent' and a class
named 'Child'GrandParent has a constructor, Parent overrides it and Child does too..
What if I want to call GrandParent's constructor from the child?Most languages allow this through casting the class into the ancestor
and call then call the method, but I can't do this with PHP, or can I ?
The other solution (right now) would be GrandParent::__construct(), but
this is not OOP anymore.. So it seems kind of weird that we get limited
in functionality, for OOP-ness, but not adding the functionality to
solve common design problems that we're raised by introducing this..Will we get casting in the future?
Evert
--
Jasper Bryant-Greene
Director
Album Limited
jasper@albumltd.co.nz
+64 21 708 334 / 0800 425 286
http://www.albumltd.co.nz/
Yes, but I want to ignore Parent behaviour, and Re-inherit GrandParent
behaviour..
Evert
Jasper Bryant-Greene wrote:
adding parent::__construct() in the constructors of both Parent and
Child should do what you want.Jasper
Evert | Rooftop wrote:
Hi List,
Sorry if this is the wrong list for this kind of stuff.. I'd be happy to
re-post this to the users mailing list.With the recent updates that will raise
E_STRICT
on static calls that
are non static, how do we properly do the following..I have a class named 'GrandParent' a class named 'Parent' and a class
named 'Child'GrandParent has a constructor, Parent overrides it and Child does too..
What if I want to call GrandParent's constructor from the child?Most languages allow this through casting the class into the ancestor
and call then call the method, but I can't do this with PHP, or can I ?
The other solution (right now) would be GrandParent::__construct(), but
this is not OOP anymore.. So it seems kind of weird that we get limited
in functionality, for OOP-ness, but not adding the functionality to
solve common design problems that we're raised by introducing this..Will we get casting in the future?
Evert
GrandParent::__construct();
Yes, but I want to ignore Parent behaviour, and Re-inherit GrandParent
behaviour..Evert
Jasper Bryant-Greene wrote:
adding parent::__construct() in the constructors of both Parent and
Child should do what you want.Jasper
Evert | Rooftop wrote:
Hi List,
Sorry if this is the wrong list for this kind of stuff.. I'd be happy to
re-post this to the users mailing list.With the recent updates that will raise
E_STRICT
on static calls that
are non static, how do we properly do the following..I have a class named 'GrandParent' a class named 'Parent' and a class
named 'Child'GrandParent has a constructor, Parent overrides it and Child does too..
What if I want to call GrandParent's constructor from the child?Most languages allow this through casting the class into the ancestor
and call then call the method, but I can't do this with PHP, or can I ?
The other solution (right now) would be GrandParent::__construct(), but
this is not OOP anymore.. So it seems kind of weird that we get limited
in functionality, for OOP-ness, but not adding the functionality to
solve common design problems that we're raised by introducing this..Will we get casting in the future?
Evert
Jasper Bryant-Greene wrote:
adding parent::__construct() in the constructors of both Parent and
Child should do what you want.
not only that but you 'should' always really be calling the complete
constructor chain (e.g. Gparent < Parent < Child) according to "OO theory" -
the thought being that the construction phase is critical to instantiating
a class instance, a subclass should be able to rely on the fact that the baseclass
definition is completely/correct instantiated when it is created.
sounds to me that either your class hierarchy is 'wrong' or there is
some code in the Parent ctor that should belopng in some optional (protected?)
setup/utility function. just a thought.
Jasper
Evert | Rooftop wrote:
Hi List,
Sorry if this is the wrong list for this kind of stuff.. I'd be happy to
re-post this to the users mailing list.With the recent updates that will raise
E_STRICT
on static calls that
are non static, how do we properly do the following..I have a class named 'GrandParent' a class named 'Parent' and a class
named 'Child'GrandParent has a constructor, Parent overrides it and Child does too..
What if I want to call GrandParent's constructor from the child?Most languages allow this through casting the class into the ancestor
and call then call the method, but I can't do this with PHP, or can I ?
The other solution (right now) would be GrandParent::__construct(), but
this is not OOP anymore.. So it seems kind of weird that we get limited
in functionality, for OOP-ness, but not adding the functionality to
solve common design problems that we're raised by introducing this..Will we get casting in the future?
Evert