I have a method within an class that should make a copy of itself, do some stuff on the copy and return it. The object contains data members that are references to other objects. I basically want a brand new copy of the object. The problem is, certain methods I call on the object throw this error: Call to undefined method stdClass::methodname I've tried to copy it with just =, =& and clone but they all through errors. What am I doing wrong? Thanks! function morph(){ $cloned_ob= clone $this; $cloned_ob->run(); $cloned_ob->data_member="john"; return $cloned_ob; }