note 108696 added to language.operators.type
| From: | wbcarts at juno dot com | Date: | Fri, 18 May 2012 02:14:50 +0000 |
| Subject: | note 108696 added to language.operators.type | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-188053@lists.php.net to get a copy of this message | ||
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:
<?php
class Circle
{
protected $radius = 1.0;
/*
* This function is the reason we are going to use the
* instanceof operator below.
*/
public function setRadius($r)
{
$this->radius = $r;
}
public function __toString()
{
return 'Circle [radius=' . $this->radius . ']';
}
}
class Point
{
protected $x = 0;
protected $y = 0;
/*
* This function is the reason we are going to use the
* instanceof operator below.
*/
public function setLocation($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.
<?php
$myCollection = array(123, 'abc', 'Hello World!',
new Circle(), new Circle(), new Circle(),
new Point(), new Point(), new Point());
$i = 0;
foreach($myCollection AS $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($item instanceof Circle)
{
$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($item instanceof Point)
{
$item->setLocation($i, $i);
}
echo '$myCollection[' . $i++ . '] = ' . $item . '<br>';
}
?>
$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]
----
Server IP: 69.147.83.197
Probable Submitter: 69.19.176.10
----
Manual Page -- http://www.php.net/manual/en/language.operators.type.php
Edit -- https://master.php.net/note/edit/108696
Del: integrated -- https://master.php.net/note/delete/108696/integrated
Del: useless -- https://master.php.net/note/delete/108696/useless
Del: bad code -- https://master.php.net/note/delete/108696/bad+code
Del: spam -- https://master.php.net/note/delete/108696/spam
Del: non-english -- https://master.php.net/note/delete/108696/non-english
Del: in docs -- https://master.php.net/note/delete/108696/in+docs
Del: other reasons-- https://master.php.net/note/delete/108696
Reject -- https://master.php.net/note/reject/108696
Search -- https://master.php.net/manage/user-notes.php