2013-01-08 29 views
6

मैं सिम्फनी 2/सिद्धांत में एक अलग तालिका में एक इकाई-ऑब्जेक्ट क्लोन करने की कोशिश कर रहा हूं। कोई आईडिया कि इसे कैसे किया जाए?सिम्फनी 2 - विभिन्न तालिका में क्लोन इकाई

डेटाबेस से वस्तु को पुन: प्राप्त करने के बाद मैं इस तरह यह क्लोन कर सकते हैं:

$newobject = clone $oldbject; 

यह मैं एक नई वस्तु है, जो मैं डेटाबेस में एक ही मेज पर एक नया रिकार्ड के रूप में बच सकते हैं देता है। वास्तव में मैं यह नहीं करना चाहता। मैं ऑब्जेक्ट को स्टोर करना चाहता हूं क्योंकि यह डेटाबेस में एक अलग तालिका के लिए है। लेकिन ऐसा करने के लिए, मुझे मूल इकाई को बदलना होगा, है ना? इसे कैसे प्राप्त करें?

उत्तर

8

लेकिन फिर आप वास्तव में क्लोनिंग एक इकाई नहीं हैं। वास्तव में, आप एक अलग इकाई चाहते हैं। दो इकाइयां कैसी दिखती हैं? क्या उनके पास एक ही क्षेत्र है? आप कुछ इस तरह कर सकता है:

$oldEntity = $oldEntity; 
$newEntity = new NewEntity(); 
$oldReflection = new \ReflectionObject($oldEntity); 
$newReflection = new \ReflectionObject($newEntity); 

foreach ($oldReflection->getProperties() as $property) { 
    if ($newReflection->hasProperty($property->getName())) { 
     $newProperty = $newReflection->getProperty($property->getName()); 
     $newProperty->setAccessible(true); 
     $newProperty->setValue($newEntity, $property->getValue($oldEntity)); 
    } 
} 

यह अपरीक्षित है - और एक या दो त्रुटि हो, लेकिन यह (यह मानते हुए गुण दोनों पर एक ही नाम है सभी गुण दूसरे करने के लिए एक वस्तु से कॉपी किया जा के लिए अनुमति चाहिए वस्तुओं)।

+1

बढ़िया काम करता है! मुझे पुरानी संपत्तियों को भी सुलभ बनाने की ज़रूरत थी, लेकिन यह एक जैसा है। – mvmoay