php也有day #27 - from apprentice to artisan 解耦合處理程序及單元測試

19
From Apprentice To Artisan 薹肄ݳ蒂ቘ纷ଧ现㻌ز介手 2016/08/11 槼犝犝@禅ਮ绸 PHP犖磪day #27

Upload: -

Post on 11-Jan-2017

2.950 views

Category:

Technology


1 download

TRANSCRIPT

From Apprentice To Artisan

2016/08/11 @

PHP day #27

• KKBOX

• Laradiner

[email protected]

• http://blog.dj1020.net

Handler

• SOLID

• DRY

• KISS

• Event

• 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• 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

Laravel 101 Code

Code handle Mitake_SMS

\App\User (Eloquent )

Event Queue Queue

new

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

1 Live Demo ( )

Production Code https://goo.gl/prpvU8

2 Live Demo ( ) Mitake_SMS

mock handle

https://goo.gl/6iFseL

3 Live Demo ( )

handle

https://goo.gl/G0QX1b

4 Live Demo ( ) Event

https://goo.gl/ta7nVn

Q&A ?

Github Repo: https://goo.gl/e4WweV