we have clearly assigned $global_obj the reference of $this then how can be this possible?
You assign the global variable within the constructor. At that time, you are referencing kind of a temporary object. Then the constructor returns a copy of that temporary object. This is that copy that $a will reference (whereas the global var still references the temporary object).
Going OOP with php 4 is nuts. I guess you should not understand the OOP behaviour of PHP 4 but just accept it...