PHP tief Klon-Objekt

Szenario: abrufen eines E-Mail-Vorlage aus der Datenbank, und eine Schleife durch eine Liste von Empfängern, die Personalisierung der E-Mail für jeden.

Meine E-Mail-Vorlage zurück, wie eine verschachtelte Objekt. Es sieht ein wenig so aus:

object(stdClass) {
    ["title"] => "Event Notification"
    ["sender"] => "[email protected]"
    ["content"] => object(stdClass) {
        ["salutation"] => "Dear %%firstname%%,"
        ["body"] => "Lorem ipsum %%recipient_email%% etc etc..."
    }
}

Dann habe ich eine Schleife durch den Empfänger übergeben das $Mail-Objekt zu einem Personalisieren () - Funktion:

foreach( $recipients as $recipient ){
    $email_body = personalise( $email, $recipient );
    //send_email();
}

Das Problem ist natürlich, dass ich mich übergeben müssen das $Mail-Objekt über eine Referenz, um für Sie zu ersetzen, die Personalisierungs-tags - aber wenn ich das mache, das ursprüngliche Objekt verändert wird und nicht mehr enthält, die Personalisierungs-tags.

So wie ich das verstehe, clone nicht mir hier helfen, denn es wird nur eine flache Kopie: das content-Objekt in der E-Mail-Objekt nicht geklont werden.

Ich gelesen habe, über die erste Runde dieses mit unserialize(serialize($obj)) - aber alles, was ich gelesen habe, sagt, das ist eine große Leistung Treffer.

So, zwei endlich meine zwei Fragen:

  1. Ist unserialize(serialize($obj)) eine vernünftige Lösung hier?
  2. Oder werde ich über diese ganze Sache falsch? Gibt es einen anderen Weg, dass ich
    können generieren Sie personalisierte Kopien des E-Mail-Objekt?
Ich finde swiftmailer macht einen guten job, das zu tun, was Sie versuchen zu tun, mit dem decorator-plugin (swiftmailer.org/docs/plugins.html#decorator-plugin), und es tut einen guten job mit dem Header; wir sind immer nur sehr geringe spam-Ergebnisse mit es.

InformationsquelleAutor Wintermute | 2012-05-31

Schreibe einen Kommentar