php - Referencing the same variable across two different classes -
<?php class foo{ public $basket; public function __construct() { $this->basket = 1; } public function getbasket(){ return $this->basket; } } class bar{ public function __construct(&$basket) { $basket++; } } $newfoo = new foo(); $newbar = new bar($newfoo->getbasket()); echo $newfoo->getbasket(); ?>
i hoping initialise $basket
value in 1 class , manipulate same variable via class. unfortunately, keep getting "notice: variables should passed reference in " error message.
question: how can change code make happen? thank you.
change
$newbar = new bar($newfoo->getbasket());
to
$basket = $newfoo->getbasket(); $newbar = new bar($basket);
the first way doesn't work because php doesn't have variable hold value you're passing new bar()
consequence, nothing can passed reference.
the second way works because $basket
var fixed reference in memory, can passed reference new bar()
you asked in comments:
have changed code yours. echo $newfoo->getbasket(); produces 1 (i hoping 2).
1
produced because each call getbasket()
gives fresh copy of class variable. $basket
passed new bar()
equals 2, that's not you're echoing.
if want result of getbasket()
, variable $basket
refer same reference in memory, need make 2 changes:
1 change function declaration to:
public function &getbasket()
2 change how store function result to:
$basket = &$newfoo->getbasket();
now echo return 2
because have unique basket reference throughout code
Comments
Post a Comment