SIMPLE, CLEAN, CLEAR use of the instanceof OPERATOR
First, define a couple of simple PHP Objects to work on -- I'll introduce Circle and Point. Here's the class definitions for both:
protected$radius=1.0;/*
* This function is the reason we are going to use the
* instanceof operator below.
*/public functionsetRadius($r)
{$this->radius=$r;
}
public function__toString()
{
return'Circle [radius='.$this->radius.']';
}
}
classPoint{
protected$x=0;
protected$y=0;/*
* This function is the reason we are going to use the
* instanceof operator below.
*/public functionsetLocation($x,$y)
{$this->x=$x;$this->y=$y;
}
public function__toString()
{
return'Point [x='.$this->x.', y='.$this->y.']';
}
}?>
Now instantiate a few instances of these types. Note, I will put them in an array (collection) so we can iterate through them quickly.
$myCollection= array(123,'abc','Hello World!',
newCircle(), newCircle(), newCircle(),
newPoint(), newPoint(), newPoint());$i=0;
foreach($myCollectionAS$item)
{/*
* The setRadius() function is written in the Circle class
* definition above, so make sure $item is an instance of
* type Circle BEFORE calling it AND to avoid PHP PMS!
*/if($iteminstanceofCircle)
{$item->setRadius($i);
}/*
* The setLocation() function is written in the Point class
* definition above, so make sure $item is an instance of
* type Point BEFORE calling it AND to stay out of the ER!
*/if($iteminstanceofPoint)
{$item->setLocation($i,$i);
}
echo'$myCollection['.$i++ .'] = '.$item.'
';
}?>
$myCollection[0] = 123
$myCollection[1] = abc
$myCollection[2] = Hello World!
$myCollection[3] = Circle [radius=3]
$myCollection[4] = Circle [radius=4]
$myCollection[5] = Circle [radius=5]
$myCollection[6] = Point [x=6, y=6]
$myCollection[7] = Point [x=7, y=7]
$myCollection[8] = Point [x=8, y=8]