Connecting Tech Pros Worldwide Forums | Help | Site Map

upcasting in PHP OOP

lawrence
Guest
 
Posts: n/a
#1: Jul 17 '05
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?

warstar
Guest
 
Posts: n/a
#2: Jul 17 '05

re: upcasting in PHP OOP


On 17 Nov 2003 12:32:28 -0800, lkrubner@geocities.com (lawrence)
wrote:
[color=blue]
>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?[/color]
Yeah u can[color=blue]
>
>If not, how else does one use the methods in super classes? Is there a
>way to do Java-style upcasting?[/color]

Yeah u can
Pedro Graca
Guest
 
Posts: n/a
#3: Jul 17 '05

re: upcasting in PHP OOP


lawrence wrote:[color=blue]
> 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?[/color]

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