2017-09-22 3 views
0

vor kurzem überprüfte ich das Swiftmailer-Paket aus und fand dieses Problem, das ich nicht erklären kann:PhP Konstruktor und Verkettungs

// #1 
$message = new Swift_Message($subject)->setFrom($f)->setTo($t)->setBody($body); 

// #2 
$message = new Swift_Message($subject); 
$message->setFrom($f)->setTo($t)->setBody($body); 

// #3 
$message = new Swift_Message($subject); 
$message->setFrom($f); 
$message->setTo($t); 
$message->setBody($body); 

Variante # 1 von dem Swiftmailer docs ist und nicht funktioniert, es ist ein „unerwartetes gibt ' > '' 'Fehler analysieren. Das Problem war einfach zu lösen, Variante 2 und 3 funktionieren perfekt.

Ich dachte, dass Methodenverkettung eine weit verbreitete Technik in PHP war, und ich dachte auch, dass # 1 vollkommen gültig ist. Warum funktioniert es nicht wie erwartet?

Mein PHP ist V7.1.1

Thx, Armin.

+2

Ändern Sie es in diese '(neue Swift_Message ($ Betreff)) -> setFrom ($ f) -> setTo ($ t) -> setBody ($ body);' –

+1

Aus welcher Dokumentation haben Sie # 1? Ich habe in https://swiftmailer.symfony.com/docs/introduction.html nachgesehen und es zeigt die Syntax, die @SahilGulati verwendet. – Barmar

+0

Fall Nr. 1 war nie gültige Syntax. Ich bezweifle, dass Sie es in der Dokumentation von SwiftMailer finden. – axiac

Antwort

1

Beispiel Nummer eins ist nicht als solche in der Dokumentation geschrieben, keiner der Beispiele Methode Kette einer Klasseninstanziierung als das war nie gültig PHP.

Die Dokumentation statt als solche steht geschrieben:

// Create the message 
$message = (new Swift_Message()) 

    // Give the message a subject 
    ->setSubject('Your subject') 

    // Set the From address with an associative array 
    ->setFrom(['[email protected]' => 'John Doe']) 

    // Set the To addresses with an associative array (setTo/setCc/setBcc) 
    ->setTo(['[email protected]', '[email protected]' => 'A name']) 

    // Give it a body 
    ->setBody('Here is the message itself') 

    // And optionally an alternative body 
    ->addPart('<q>Here is the message itself</q>', 'text/html') 

    // Optionally add any attachments 
    ->attach(Swift_Attachment::fromPath('my-document.pdf')); 

Beachten Sie, dass die Klasse innerhalb umschließenden Klammern instanziiert wird. Dies ermöglicht eine Methodenverkettung direkt vom Konstruktor.

+0

Manchmal sind es die einfachen Dinge :-) Danke! Und die "originalen" Dokumente sind auch korrekt, ich hatte Pech, in eine fehlerhafte web-formatierte Kopie aus erster Hand zu geraten. – Nimral