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

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

  • Upload
    -

  • View
    2.950

  • Download
    1

Embed Size (px)

Citation preview

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