परिदृश्य: डेटाबेस से एक ईमेल टेम्पलेट लाएं, और प्राप्तकर्ताओं की एक सूची के माध्यम से लूप, प्रत्येक के लिए ईमेल वैयक्तिकृत करें।PHP गहरी क्लोन ऑब्जेक्ट
मेरा ईमेल टेम्पलेट एक नेस्टेड ऑब्जेक्ट के रूप में वापस कर दिया गया है। यह थोड़ा इस प्रकार दिखाई देंगे:
object(stdClass) {
["title"] => "Event Notification"
["sender"] => "[email protected]"
["content"] => object(stdClass) {
["salutation"] => "Dear %%firstname%%,"
["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
}
}
तब मैं प्राप्तकर्ताओं के माध्यम से लूप, एक निजीकृत करने के लिए इस $ ईमेल वस्तु गुजर() फ़ंक्शन:
foreach($recipients as $recipient){
$email_body = personalise($email, $recipient);
//send_email();
}
मुद्दा, ज़ाहिर है, वह यह है कि मैं व्यक्तिगतकरण टैग को प्रतिस्थापित करने के लिए संदर्भ द्वारा $ ईमेल ऑब्जेक्ट को पास करने की आवश्यकता है - लेकिन यदि मैं ऐसा करता हूं, तो मूल ऑब्जेक्ट बदल जाता है और इसमें वैयक्तिकरण टैग नहीं होते हैं।
जैसा कि मैं समझता हूं, क्लोन यहां मेरी सहायता नहीं करेगा, क्योंकि यह केवल एक उथली प्रतिलिपि बनाएगा: ईमेल ऑब्जेक्ट के अंदर सामग्री ऑब्जेक्ट को क्लोन नहीं किया जाएगा।
मैंने इसे अनसुलझा (serialize ($ obj)) के साथ गोल करने के बारे में पढ़ा है - लेकिन मैंने जो कुछ भी पढ़ा है, वह कहता है कि यह एक बड़ा प्रदर्शन हिट है।
तो, दो अंत में मेरे दो सवालों पर कैसे पहुंचेंगे:
- unserialize (क्रमानुसार ($ obj)) एक उचित समाधान यहाँ है?
- या क्या मैं इस पूरी चीज़ के बारे में गलत हूं? क्या कोई अलग तरीका है कि मैं उस ईमेल ऑब्जेक्ट की वैयक्तिकृत प्रतियां उत्पन्न कर सकता हूं?
मुझे लगता है कि स्विफ्टमेलर क्या कर रहा है जो आप सजावटी प्लगइन (http://swiftmailer.org/docs/plugins.html#decorator-plugin) के साथ करने का प्रयास कर रहे हैं, इसके साथ ही यह अच्छा काम करता है हेडर; हम इसके साथ बहुत कम स्पैम परिणाम प्राप्त कर रहे हैं। – scott