最近我检查了SwiftMailer包,发现这个问题我无法解释:
// #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);
变体#1来自SwiftMailer文档,并且不起作用,它提供了一个"意外的''""解析错误。问题很容易解决,变体#2和#3完美地运作。
我认为方法链是PHP中广泛使用的技术,我也认为#1完全有效。为什么它没有按预期工作?
我的PHP是V7.1.1
Thx,Armin。
答案 0 :(得分:1)
示例第一个不是在docs中编写的,类实例化的示例方法链都没有,因为它从来就不是有效的PHP。
文档改为:
// Create the message
$message = (new Swift_Message())
// Give the message a subject
->setSubject('Your subject')
// Set the From address with an associative array
->setFrom(['john@doe.com' => 'John Doe'])
// Set the To addresses with an associative array (setTo/setCc/setBcc)
->setTo(['receiver@domain.org', 'other@domain.org' => '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'));
请注意,该类在封闭括号内实例化。这允许直接从构造函数链接方法。