php也有day #27 - from apprentice to artisan 解耦合處理程序及單元測試
TRANSCRIPT
• KKBOX
• Laradiner
• http://blog.dj1020.net
class SendSMS implements ShouldQueue { public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }}
1• Code
handle Mitake_SMS
• new
$mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]);
2• \App\User (Eloquent )
• \App\User::find() new
$user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]);
class SendSMS implements ShouldQueue{ public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }}
3
Event Queue
Queue
class SendSMS implements ShouldQueue{ public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }} - 1
Production Code (OCP)
class SendSMS implements ShouldQueue{ public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }} - 2
Mitake_SMS Mock handle
class SendSMS implements ShouldQueue{ public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }} - 3
handle
class SendSMS implements ShouldQueue{ public function handle(SendSMSEvent $event) { $data = $event->getData(); $mitake = new Mitake_SMS($this->apiKey); $mitake->sendTextMessage([ 'to' => $data['phone'], 'message' => $data['message'], ]); $user = \App\User::find($data['user']['id']); $user->messages()->create([ 'to' => $data['phone'], 'message' => $data['message'], ]); }} - 4
Event