Domain-Driven Design in PHP
上QQ阅读APP看书,第一时间看更新

Basic Types

Consider the following code snippet:

$a = 10; 
$b = 10;
var_dump($a == $b);
// bool(true)
var_dump($a === $b);
// bool(true)
$a = 20; 
var_dump($
a);
// integer(20)
$a = $a + 30;
var_dump($a);
// integer(50);

Although $a and $b are different variables stored in different memory locations, when compared, they're the same. They hold the same value, so we consider them equal. You can change the value of $a from 10 to 20 at any time that you want, making the new value 20 and eliminating the 10. You can replace integer values as much as you want without consideration of the previous value because you're not modifying it; you're just replacing it. If you apply any operation — such as addition (That is. $a + $b) — to these variables, you get another new value that can be assigned to another variable or a previously defined one. When you pass $a to another function, except when explicitly passed by reference, you're passing a value. It doesn't matter if $a gets modified within that function, because in your current code, you'll still have the original copy. Value Objects behave as basic types.