Slide 1

Slide 1 text

2023.09.05 Yuta Ohashi DROBE Engineer Night #5

Slide 2

Slide 2 text

/ @blue_goheimochi PHP(Laravel), JavaScript(Vue.js/Nuxt.js), , , , , PUBG MOBILE,

Slide 3

Slide 3 text

Mission

Slide 4

Slide 4 text

4 • CTO • : 7 • : 7 • : 15 • PHPer

Slide 5

Slide 5 text

5 • Laravel • React • PostgreSQL • AWS

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

7 • • Laravel • • • •

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

9 Laravel • Eloquent • Facede • • Artisan •

Slide 10

Slide 10 text

10 Laravel • • Laravel Way 1 • • • •

Slide 11

Slide 11 text

11 Laravel • • Laravel • Laravel • Laravel • • • Interface

Slide 12

Slide 12 text

12 Laravel Laravel Laravel

Slide 13

Slide 13 text

13 Laravel class Register { public function __construct( private readonly Mailer $mailer, ) {} public function create(string $name): void { // 何らか登録などする処理 // メールの送信 $this->mailer->send(new SayHello($name)); } } app/Services/Register.php

Slide 14

Slide 14 text

14 Laravel class Register { public function __construct( private readonly Mailer $mailer, ) {} public function create(string $name): void { // 何らか登録などする処理 // メールの送信 $this->mailer->send(new SayHello($name)); } } Mailer app/Services/Register.php

Slide 15

Slide 15 text

15 Laravel class Register { public function __construct( private readonly Mailer $mailer, ) {} public function create(string $name): void { // 何らか登録などする処理 // メールの送信 $this->mailer->send(new SayHello($name)); } } Mailer Laravel app/Services/Register.php

Slide 16

Slide 16 text

16 class Register { public function __construct( private readonly SayHelloSenderInterface $sender, ) {} public function create(string $name): void { // 何らか登録などする処理 // メールの送信 $this->sender>send($name); } } lib/User/Register.php Laravel class SayHelloSenderInterface { public function send(string $name): void } lib/Mail/SayHelloSenderInterface.php

Slide 17

Slide 17 text

17 class Register { public function __construct( private readonly SayHelloSenderInterface $sender, ) {} public function create(string $name): void { // 何らか登録などする処理 // メールの送信 $this->sender>send($name); } } Laravel class SayHelloSenderInterface { public function send(string $name): void } Interface Mailer lib/User/Register.php lib/Mail/SayHelloSenderInterface.php

Slide 18

Slide 18 text

18 Laravel class SayHelloConcrete implements SayHelloSenderInterface { public function __construct( private readonly Mailer $mailer, ) {} public function send(string $name): void { // メールの送信 $this->mailer->send(new SayHello($name)); } } app/Mail/SayHelloConcrete.php class SayHelloSenderInterface { public array $bindings = [ ¥Package¥Mail¥SayHelloInterface::class => ¥App¥Services¥SayHelloConclete::class, ]; } app/Providers/AppServiceProvider.php

Slide 19

Slide 19 text

19 Laravel class SayHelloConcrete implements SayHelloSenderInterface { public function __construct( private readonly Mailer $mailer, ) {} public function send(string $name): void { // メールの送信 $this->mailer->send(new SayHello($name)); } } class SayHelloSenderInterface { public array $bindings = [ ¥Package¥Mail¥SayHelloInterface::class => ¥App¥Services¥SayHelloConclete::class, ]; } Laravel app ServiceProvider Interface app/Mail/SayHelloConcrete.php app/Providers/AppServiceProvider.php

Slide 20

Slide 20 text

20 Laravel Interface • • app Laravel • lib Laravel • Laravel app • lib •

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

22 • •

Slide 23

Slide 23 text

23 • • • • 1 • • or • • • • Issue

Slide 24

Slide 24 text

24 • • • • • • • • • Issue •

Slide 25

Slide 25 text

25 • around • • • • •

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

27 • • Laravel • • •

Slide 28

Slide 28 text

28 • • Laravel • • • How

Slide 29

Slide 29 text

29 How • Why • Why • •