Re: Change Object Type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.


-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux