There's a lot to say about references in PHP. The main problem comes from the fact that (until ZendEngine2), objects are copied when not passed by reference.
Whenever array functions are called on arrays containing objects, there's no way to be sure of the result.
In fact, most array functions do object copy and thus you'll loose any modification.
This reference helper system is based on the fact that copy of objects preserves reference members.
Example :
If an array stores objects, using
array_values will copy its elements,
loosing original objects.
If an array stores Ref objects,
array_values copy Ref objects but these copies
still reference their source object.
The reference system proposed here allow you to pass References to non reference aware functions as well as any kind of dangerous process where keeping the source object without copying it is critical.