|  | Posted by Jochem Maas on 06/19/28 11:14 
marc serra wrote:> hi,
 > i'm looking for a solution to change the object's class.
 >
 > i got a class and a derived class like this: (just for example,
 > completly stupid ^^)
 >
 > class Ex{
 >    var a;
 >    var b;
 > }
 >
 > class Ex2 extends Ex{
 >    var c;
 > }
 >
 > i want to create an object Ex and after change the object class to Ex2
 > to complete him like this:
 > $ex = new Ex();
 > $ex->a = 1;
 > $ex->b = 2;
 >
 > $ex2 = (Ex2)$ex;      /// here i want to convert object Ex to object Ex2
 > $ex2->c = 5;
 >
 > Can someone help me? I know it's possible to do this in JAVA but it is
 > possible to do the same in PHP ?
 
 its not possible exactly how you propose it, but I can certainly see a way of doing it
 , something like (just an idea - code is not tested):
 
 class Ex {
 function __contruct($extend = null)
 {
 if (is_object($extend)) {
 $parents = parent_classes($this);
 if (in_array(get_class($extend, $parents))) {
 // is a parent!
 // now do some kind of loop to set the vars
 // of $this to the values of the same vars in $extend
 // maybe reflection would a good way to write this
 // generically
 }
 }
 }
 var a;
 var b;
 }
 
 class Ex2 extends Ex {
 var c;
 }
 
 $A = new Ex();
 $A->a = 1;
 $A->b = 2;
 
 $B = new Ex2( $ex );
 $B->c = 5;
 
 also you might want to look into writing a custom __clone() method
 for the relevant class which returns a different (subclass) object
 underwhatever circumstances (I have no idea whether it is allowed to return
 an object from __clone() of a different class to the class of the object
 you are cloning)
 
 > thx in advance,
 > Marc.
 >
 [Back to original message] |