note 108696 added to language.operators.type

From: 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

« previous php.notes (#188053) next »