This is a discussion on upcasting in PHP OOP within the PHP Language forums, part of the PHP Programming Forums category; Lets suppose I have an class called DatastoreSelect. It has a method called getNextRow(). This method is not abstract, it ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Lets suppose I have an class called DatastoreSelect. It has a method
called getNextRow(). This method is not abstract, it is fully implemented. It also has a method called setInfoToBeSought, which is abstract in the sense that it has no implementation. Now suppose I have an class called GetAllComments, which inherits from DatastoreSelect. GetAllComments does not have a method called getNextRow(). GetAllComments has a method called setInfoToBeSought, which contains some SQL, like this: $query = "SELECT * FROM content WHERE type='comments' AND page=$pageId"; GetAllComments also has a method called getInfo() which gets runs the query and gets a resource pointer. Can I do this: $gac = new GetAllComments(); $gac->setInfoToBeSought($pageId); $gac->getInfo(); $datastoreReturn = $gac->getNextRow(); I mean, can I act like the method getNextRow() is there, even though it's implementation is in the parent class? If not, how else does one use the methods in super classes? Is there a way to do Java-style upcasting? |
|
|||
|
On 17 Nov 2003 12:32:28 -0800, lkrubner@geocities.com (lawrence)
wrote: >Lets suppose I have an class called DatastoreSelect. It has a method >called getNextRow(). This method is not abstract, it is fully >implemented. It also has a method called setInfoToBeSought, which is >abstract in the sense that it has no implementation. > >Now suppose I have an class called GetAllComments, which inherits from >DatastoreSelect. GetAllComments does not have a method called >getNextRow(). GetAllComments has a method called setInfoToBeSought, >which contains some SQL, like this: > >$query = "SELECT * FROM content WHERE type='comments' AND >page=$pageId"; > >GetAllComments also has a method called getInfo() which gets runs the >query and gets a resource pointer. > >Can I do this: > >$gac = new GetAllComments(); >$gac->setInfoToBeSought($pageId); >$gac->getInfo(); >$datastoreReturn = $gac->getNextRow(); > > >I mean, can I act like the method getNextRow() is there, even though >it's implementation is in the parent class? Yeah u can > >If not, how else does one use the methods in super classes? Is there a >way to do Java-style upcasting? Yeah u can |
|
|||
|
lawrence wrote:
> Lets suppose I have an class called DatastoreSelect. It has a method > called getNextRow(). [...] > > Can I do this: > > $gac = new GetAllComments(); > $gac->setInfoToBeSought($pageId); > $gac->getInfo(); > $datastoreReturn = $gac->getNextRow(); > > > I mean, can I act like the method getNextRow() is there, even though > it's implementation is in the parent class? > > If not, how else does one use the methods in super classes? Is there a > way to do Java-style upcasting? What happenned when you tried? When I tried this =-=-=-=-=-=-=-=-=-=-=-=-=-=-= <?php class x1 { function out() {echo 'x1::out';} } class x2 extends x1 { function out2() {echo 'x2::out';} } $z = new x2; $z->out(); echo "\n\n"; $z->out2(); echo "\n\n"; ?> =-=-=-=-=-=-=-=-=-=-=-=-=-=-= I got this back =-=-=-=-=-=-=-=-=-=-=-=-=-=-= x1::out x2::out =-=-=-=-=-=-=-=-=-=-=-=-=-=-= -- ..sig |