note 61744 added to language.references.spot

From: Date: Fri, 10 Feb 2006 17:02:40 +0000
Subject: note 61744 added to language.references.spot
Groups: php.notes 
Request: Send a blank email to php-notes+get-103465@lists.php.net to get a copy of this message
One may check reference to any object by simple operator==( object). Example: class A {} $oA1 = new A(); $roA = & $oA1; echo "roA and oA1 are " . ( $roA == $oA1 ? "same" : "not same") . "<br>"; $oA2 = new A(); $roA = & $roA2; echo "roA and oA1 are " . ( $roA == $oA1 ? "same" : "not same") . "<br>"; Output: roA and oA1 are same roA and oA1 are not same Current technique might be useful for caching in objects when inheritance is used and only base part of extended class should be copied (analog of C++: oB = oA): class A { /* Any function changing state of A should set $bChanged to true */ public function isChanged() { return $this->bChanged; } private $bChanged; //... } class B extends A { // ... public function set( &$roObj) { if( $roObj instanceof A) { if( $this->roAObj == $roObj && $roObj->isChanged()) { /* Object was not changed do not need to copy A part of B */ } else { /* Copy A part of B */ $this->roAObj = &$roObj; } } } private $roAObj; } ---- Server IP: 64.246.30.37 Probable Submitter: 131.225.163.89 ---- Manual Page -- http://www.php.net/manual/en/language.references.spot.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+61744 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+61744&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+61744&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#103465) next »