Hello Marcus, Wednesday, July 2, 2003, 1:13:11 AM, you wrote:
MB> Hello Marcus, MB> Wednesday, July 2, 2003, 12:54:12 AM, you wrote: MB>> Hello Marcus, MB>> Monday, June 30, 2003, 2:28:35 AM, you wrote: MB>>> - Fix __clone() visibility. When implementing singletons we must forbid calling MB>>> __clone() by making it private (private function __clone() is the same to MB>>> singletons as private function __construct() to factories). Also the clone MB>>> mechanism must ensure the new object has all properties defined in the class. MB>>> The current implementation doesn't do so what contradicts the inheritance MB>>> model. The following example show both errors: MB>>> php -r 'class t {var $x; private function __clone() {} }; $a = new t; $b = $a->__clone(); var_dump($a);var_dump($b);' MB>>> object(t)#1 (1) { MB>>> ["x"]=> MB>>> NULL MB>>> } MB>>> object(t)#2 (0) { MB>>> } MB>> I looked into the way it works and was able to fix the visibility. However MB>> there is still the problem that properties are not copied. I thing there are MB>> two possible solutions: MB>> a) create all properties in the new object before calling __clone MB>> b) create all missing propertis after calling __clone. This way (i fear) we MB>> would need a new opcode.... HA! I lied there was plan c. Fixed now for normal properties. -- Best regards, Marcus mailto:[EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php