<?php
class Fruit {
private $color = "red";
public function getColor() {
return $this->color;
}
public function &getColorByRef() {
return $this->color;
}
}
echo "\nTEST RUN 1:\n\n";
$fruit = new Fruit;
$color = $fruit->getColor();
echo "Fruit's color is $color\n";
$color = "green"; // does nothing, but bear with me
$color = $fruit->getColor();
echo "Fruit's color is $color\n";
echo "\nTEST RUN 2:\n\n";
$fruit = new Fruit;
$color = &$fruit->getColorByRef(); // also need to put & here
echo "Fruit's color is $color\n";
$color = "green"; // now this changes the actual property of $fruit
$x = $fruit->getColor();
echo "Fruit's color is $color\n";
<?php
class Fruit {
private $color = "red";
public function getColor() {
return $this->color;
}
public function &getColorByRef() {
return $this->color;
}
}
echo "\nTEST RUN 1:\n\n";
$fruit = new Fruit;
$color = $fruit->getColor();
echo "Fruit's color is $color\n";
$color = "green"; // does nothing, but bear with me
$color = $fruit->getColor();
echo "Fruit's color is $color\n";
echo "\nTEST RUN 2:\n\n";
$fruit = new Fruit;
$color = &$fruit->getColorByRef(); // also need to put & here
echo "Fruit's color is $color\n";
$color = "green"; // now this changes the actual property of $fruit
$x = $fruit->getColor();
echo "Fruit's color is $color\n";
<?php
class foo {
public $value = 1;
public function &getValue() {
return $this->value;
}
}
// 1
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 1.
$obj->value = 2;
echo $myValue; // 2
// 2
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 1.
$myValue = 3;
echo $obj->value; // 3
$demo->example() => original value
$demo->example() => var2 value
$var1 => var1 value
$var2 => var2 value
$demo->example() => var3 value
$var1 => var1 value
$var2 => var3 value
$var3 => var3 value
$demo->example() => original value
$demo->example() => var2 value
$var1 => var1 value
$var2 => var2 value
$demo->example() => var3 value
$var1 => var1 value
$var2 => var3 value
$var3 => var3 value
<?php
class foo {
public $value = 1;
public function &getValue() {
return $this->value;
}
}
// 1
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 1.
$obj->value = 2;
echo $myValue; // 2
// 2
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 1.
$myValue = 3;
echo $obj->value; // 3
<?php
class DataHolder {
protected array $data = [];
public function setData(array $data) {
$this->data = $data;
}
public function &getData() {
return $this->data;
}
}
$dataHolder = new DataHolder();
// Nastavení dat pomocí setData()
$data = [1, 2, 3];
$dataHolder->setData($data);
// Získání dat pomocí getData()
$referenceToData = &$dataHolder->getData();
// Změna dat přímo pomocí reference
$referenceToData[0] = 100;
// Data jsou změněna i v objektu $dataHolder
var_dump($dataHolder->getData()); // Vypíše: [100, 2, 3]