Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravelの良いところ - PHP勉強会 東京 vol.121

Avatar for fagai fagai
March 14, 2022
13

Laravelの良いところ - PHP勉強会 東京 vol.121

slideshareにあげていたやつです。

Avatar for fagai

fagai

March 14, 2022

Transcript

  1. ؆୯ͳྫ // όΠϯσΟϯάΛఆٛ app()->bind(PersonInterface::class, Alice::class); app()->make(PersonInterface::class); // Alice͕new͞Εͨ΋ͷ͕ฦ͞ ΕΔ //

    Ϋϩʔδϟʔ΋ࢦఆՄೳ app()->bind(FugaInterface::class, function($app) { w w w w return new Fuga(‘aaa’); }); // ఆٛͨ͠ޙ͔Β௥Ճ΋Մೳ app()->extend(PersonInterface::class, function($person, $app) { w w w w $person->extend = ‘extend’; return $person; });
  2. ʁ

  3. ίϯςφ͕ΠϯελϯεΛ࡞Ζ͏ͱ͢Δ ΫϥεɺΠϯλʔϑΣʔε໊౳͕౉͞ΕΔ ࡞Ζ͏ͱ͍ͯ͠ΔΫϥεɺΠϯλʔϑΣʔε͕ ίϯςφʹొ࿥͞Ε͍ͯΔ Ϋϥε͕ଘࡏ Ϋϥε͕ແ͍ ·ͨ͸ ଞͷԿ͔ ొ ࿥

    ͳ ͠ ొ࿥͋Γ ΠϯελϯεԽෆՄೳ ΤΠϦΞεͳͲ ΠϯελϯεԽՄೳ Ϋϥε ΫϩʔδϟͳͲ Τϥʔ ίϯετϥΫλɺݺͼग़͢ϝιουͷ Ҿ਺Λௐ΂ɺղܾͯ͠ͳ͍΋ͷ͕͋Δ ͳ ͍ ͋Δ ੜ੒ͯ͠ฦ͢ ղܾ͍ͯ͠ͳ͍Ҿ਺ͷΫϥε໊౳Λ౉͢
  4. class BookController extends Controller { protected $service; public function __construct(BookService

    $service) { $this->service = $service; } public function index(Request $request) { // } } class BookService { protected $bookRepository; public function __construct(BookRepositoryInterface $bookRepository) { $this->bookRepository = $bookRepository; } } ίϯετϥΫλ ΠϯδΣΫγϣϯͰ஫ೖ ίϯςφʹొ࿥ͯ͋͠Δ #PPL3FQPTJUPSZΫϥε͕ ஫ೖ͞ΕΔ app()->bind(BookRepositoryInterface::class, BookRepository::class); όΠϯυΛొ࿥͓ͯ͘͠
  5. • BookControllerͷindexϝιουΛݺͼ͍ͨͱ͍͏͜ͱͰύϥϝʔλΛ ౤͛Δ(※1) • BookControllerͷίϯετϥΫλΛݟͯɺBookServiceΫϥε͕λΠϓ ώϯτ͞Ε͍ͯΔ͜ͱΛ஌Δ(※2) • BookServiceΫϥε͸ίϯςφʹ͸ొ࿥͞Ε͍ͯͳ͍͚ͲɺΫϥεͩͬ ͨͷͰ৽͘͠࡞Ζ͏ͱ͢Δ(※1) •

    BookServiceΫϥεͷίϯετϥΫλΛݟͯɺ BookRepositoryInterface͕λΠϓώϯτ͞Ε͍ͯΔ͜ͱΛ஌Δ(※2) • BookRepositoryInterface͸BookRepositoryΫϥεΛ஫ೖ͢Δ͜ͱ͕ί ϯςφʹ͔͔Ε͍ͯΔͷͰBookRepositoryΛ஫ೖͯ͠(※1)ɺ BookServiceΫϥεͷΠϯελϯεΛ࡞Δ • BookControllerͷindexϝιουʹ͸RequestΫϥε͕λΠϓώϯτ͞ Ε͍ͯΔͷͰ(※2)ɺ͜ΕΛ஫ೖͯ͠(※1)ϝιουͷ಺෦ॲཧ͕࢝·Δ