我正在尝试使用laravel mail events触发已发送的电子邮件,我在 EventServiceProvider.php 中注册了我的活动:
'Illuminate\Mail\Events\MessageSending' => [ 'App\Listeners\CopyEmailIntoSentFolder', ],
CopyEmailIntoSentFolder.php :
class CopyEmailIntoSentFolder
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSending $event
* @return void
*/
public function handle(MessageSending $event)
{
//
}
}
有没有办法覆盖 MessageSending.php 类?我需要在我的活动中添加其他数据并 MessageSending.php only stores swift_Message
答案 0 :(得分:0)
您应该只需在对象上插入新属性即可。
查看实际操作:https://ideone.com/PsxiLb
class Foo {
public $message = 'none';
public function __construct($message) {
$this->message = $message;
}
}
$foo = new Foo('hello');
$foo->bar = new Foo('bar');
var_dump($foo);
输出:
object(Foo)#1 (2) {
["message"]=>
string(5) "hello"
["bar"]=>
object(Foo)#2 (1) {
["message"]=>
string(3) "bar"
}
}
如您所见,在填充了新Foo对象的Foo对象上创建了属性栏。
只要该属性不存在,您就可以在该对象上创建一个新属性,它将被传递给它传递给的其他对象。
您必须测试事件对象是否无法恢复,直到它到达您的控制器,但发生这种情况的可能性很小。