The above code works fine on PHP5. The $my_foo->owner and $my_bar variables reference the same object. But it seems that on PHP4 the $owner->foo = &$this; assignment doesn't make a reference and works just as $owner->foo = $this;.
Is there any way to make a reference on the created object inside a constructor?
I don't think that's it, as the reference indeed points to $my_bar, and is changed as would be expected. The problem is that $my_bar->foo is not the same object as $my_foo, as should be the case from the above code.
The code as written has an explicit meaning according to the semantics of the language, and that meaning appears to not be what's actually executed. This may be a documented exception, but I doubt it. I'd recommend filing a bug (after thouroughly checking the documentation and existing bug log, of course).