Skip to content

๐Ÿ• ํ‡ด๊ทผ ํ›„ ์šฐ๋ฆฌ๋“ค์„ ์œ„ํ•œ ์ตœ๋‹จ ๋ง›์ง‘์ฐพ๊ธฐ Laravel

Notifications You must be signed in to change notification settings

PAPION93/tell-me-what-you-want-laravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

93 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์ตœ์ ์˜ ์Œ์‹์  ์ฐพ๊ธฐ(Backend Laravel)

ํ˜„์žฌ์œ„์น˜์™€ ์Œ์‹์ข…๋ฅ˜ ๊ทธ๋ฆฌ๊ณ  +a ๋กœ ์ตœ์ ์˜ ์Œ์‹์ ์„ ์ฐพ์•„๋ณด์ž
์ฒซ ์ž‘์„ฑ, ์ตœ๋Œ€ ์ผ์ฃผ์ผ๊ฐ„ ์•„์ด๋””์–ด๋งŒ ๋‚ด๋ณผ ๊ฒƒ

์‹œ์ž‘ ์ „

1. ๊ณ„๊ธฐ

  • ๋‚˜๋Š” ํ‡ด๊ทผํ•˜๊ณ  ๊ทธ๋ถ„๊ณผ ํ•จ๊ป˜ ๋ฌด์—‡์„ ๋จน์œผ๋ฉด ์ข‹์„์ง€ ์ƒ๊ฐ์ด ๋‚˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฏธ๋ฆฌ ์ƒ๊ฐ์•ˆํ•˜๊ณ  ๊ณ„ํš์—†๋‹ค๊ณ  ํ˜ผ์ด ๋‚œ๋‹ค.
  • ๊ทธ๋ž˜๋„ ๋‚œ ์—…๋ฌด์‹œ๊ฐ„์—” ์ƒ๊ฐํ•  ์ˆ˜ ์—†๋‹ค! ๊ฐœ๋ฐœ์„ ์—ด์‹ฌํžˆ!
  • ์ง€๊ธˆ๋„ ํ˜ผ๋‚˜๊ณ  ๋จผ๊ธธ ๋Œ์•„์™€ ๊ณต๋ถ€ํ• ๊ฒธ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ณธ๋‹ค.

2. ๋ฐฉํ–ฅ

  • ๋ชจ๋‘ ์ƒˆ๋กœ ์ ‘ํ•˜๋Š” ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— Study Log ์ž‘์„ฑํ•˜๊ธฐ
  • ๊พธ์ค€ํ•˜๊ฒŒ + ๋ฐ๋“œ๋ผ์ธ ์žก๊ธฐ
    • ๋ฒŒ์จ ์˜ค๋žœ๋งŒ์— ๋“ค์–ด์˜ด. ๊ทธ๋ž˜์„œ ๊พธ์ค€ํ•จ์„ ์œ„ํ•ด ๋‚ ์งœ๋‚˜ ์‹œ๊ฐ„์„ ์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.
  • ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ๊ณต๋ถ€ ๋ชฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ๋ผ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์˜ API๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ํฌ๋กค๋งํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ํ•„์š”๊ฐ€ ์—†์Œ.
    • ์„œ๋น„์Šค ๋ชฉ์ ์ด ์•„๋‹Œ๋ฐ ์–ด๋Š ์ˆœ๊ฐ„ ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ์Œ.
    • ๋ชจ๋‘ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉฐ ๋ผ๋ผ๋ฒจ๊ณผ ์ข‹์€ ๋””์ž์ธ ํŒจํ„ด์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ๋ชฉ์ .
  • ์€ ์•„๋‹˜. ์„œ๋น„์Šค ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค๋Š” ์ƒ๊ฐ.

3. Todo

  • JWT Auth

  • ์Œ์‹์ 

    • CRUD
    • ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง
  • ์Œ์‹์  ์ข‹์•„์š”

    • ๋ฆฌ์ŠคํŠธ
    • ์ถ”๊ฐ€, ์‚ญ์ œ
  • ์ถ”์ฒœ ๊ธฐ๋Šฅ

    • ๋‚ ์”จ, ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ
  • ์œ ์ €๋ณ„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

    • ์‚ฌ์žฅ๋‹˜
      • ์›จ์ดํŒ… ์ธ์›, ์˜ˆ์ƒ๋Œ€๊ธฐ์‹œ๊ฐ„, ์žฌ๋ฃŒ์†Œ์ง„ ๋“ฑ ํœด๋ฌด ๋“ฑ๋ก
    • ํšŒ์›
      • ํ‰์ ๊ณผ ๊ฐ„๋‹จํ•œ ๋ฆฌ๋ทฐ
  • ๊ฒ€์ƒ‰ ์ˆœ์œ„


์‹œ์ž‘

๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…

  1. docker-compose up -d --build
  2. composer install
  3. cp .env.example .env
  4. php artisan key:generate

๊ฐœ๋ฐœ ์ •๋ฆฌ

  1. Repository pattern

    • ๋ชฉ์ 

      • domain๊ณผ persistent layer ์˜ ๋ถ„๋ฆฌ
      • ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์‹œ์Šคํ…œ, ์™ธ๋ถ€ ์„œ๋น„์Šค ๋“ฑ์˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
      • ๋ชจ๋ธ๊ณผ ์ปจํŠธ๋กค๋Ÿฌ ์‚ฌ์ด์— ๋ธŒ๋ฆฌ์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ๋ชจ๋ธ์ด ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ํ†ต์‹ ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ฑ…์ž„์„ ์—†์•ค๋‹ค
    • ์žฅ์ 

      • ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ๋กœ์ง์˜ ์ค‘์•™ ์ง‘์ค‘ํ™”๋กœ ์ฝ”๋“œ ์œ ์ง€ ๊ด€๋ฆฌ ์šฉ์ด
      • ์ฝ”๋“œ ์ค‘๋ณต ๊ฐ์†Œ
      • ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋กœ์ง ๋ณ„๋„ ํ…Œ์ŠคํŠธ
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ๊ฐ์†Œ
    • ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

      • RepositoryInterface ์—์„œ ๋ฉ”์†Œ๋“œ ์ •์˜
      • Repository ์—์„œ Eloquent ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„
        • Eloquent๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฐ™์€ ์œ„์น˜์— ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ตฌํ˜„๋ถ€๋งŒ ์ƒˆ๋กœ ์ž‘์„ฑ
        • Ex) App\Repository\Mongo\UserRepository
      • Controller ๋Š” Repository์˜ ๊ตฌํ˜„์„ ์‚ฌ์šฉ
    • ๊ทœ์น™

      • 1 Repository : 1 Interface
      • new ํ‚ค์›Œ๋“œ ๋Œ€์‹  ํ•ญ์ƒ Dependency Injection์„ ์‚ฌ์šฉํ•˜๋ผ. ํƒ€์ž…์€ ๊ตฌํ˜„์ด ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฃผ์ž…ํ•˜๋ผ. ๋‹จ์œ„ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์ด ์‰ฌ์›Œ์ง„๋‹ค.
      • ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งŽ์€ Repository ์—์„œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ BaseRepository์— ๊ตฌํ˜„ํ•˜๋ผ.
      • ์ƒ์„ฑ์ž์— ๋ชจ๋ธ์„ ์ฃผ์ž…ํ•  ๋•Œ Static Class๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ. ๊ทธ๋Ÿฌ๋ฉด ๋‹จ์œ„ํ…Œ์ŠคํŠธ์—์„œ ์‰ฝ๊ฒŒ mock ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฒฐ๋ก 

      • Repository Class๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ณณ์—์„œ๋Š” Eloquent๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
        • Laravel์—์„œ Eloquent๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์—”์ง„์œผ๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ง์ด๋‹ค.
        • ํ•ด๋‹น ํฌ์ŠคํŠธ์˜ ๋Œ“๊ธ€์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต๋‹ค.
        • ๊ฒฐ๊ตญ ์ด ๋ฐฉ์‹์˜ ๋ชฉ์ ์€ ๋ผ๋ผ๋ฒจ์—์„œ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋†’์€ ํ’ˆ์งˆ์˜ Repository Pattern์„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.
    • ์ตœ์ข… ๊ฐœ๋ฐœ ๊ทœ์น™

      • ๋ฐ์ดํ„ฐ ์—”์ง„์„ ๋ฐ”๊พผ๋‹ค๋Š” ์ƒ๊ฐ์€ ํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
      • ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค๋Š” ์ตœ๋Œ€ํ•œ Repository๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•˜๊ณ , ๊ทธ๋กœ ์ธํ•ด ๋กœ์ง์˜ ์ค‘๋ณต์ œ๊ฑฐ ๋ฐ ์œ ์ง€๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.
      • ๋ชจ๋ธ์€ Repository Class ์—๋งŒ ์ฃผ์ž…ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  2. ๊ทธ๋ ‡๋‹ค๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ž‘์„ฑ์€ ์–ด๋””์—์„œ ํ•  ๊ฒƒ์ธ๊ฐ€?

    • Service ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
    • Controller -> Repository ๋˜๋Š” Controller -> Service ->Repository ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค.

About

๐Ÿ• ํ‡ด๊ทผ ํ›„ ์šฐ๋ฆฌ๋“ค์„ ์œ„ํ•œ ์ตœ๋‹จ ๋ง›์ง‘์ฐพ๊ธฐ Laravel

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published