Facade

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋“ค์— ์ •์  ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ผ๋ผ๋ฒจ์€ ๋Œ€๋ถ€๋ถ„์˜ ๋ผ๋ผ๋ฒจ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•˜๋Š” ๋งŽ์€ ํŒŒ์‚ฌ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋œ ํด๋ž˜์Šค๋“ค์— ๋Œ€ํ•œ ์ผ์ข…์˜ ์ •์  ํ”„๋ก์‹œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •์  ๋ฉ”์†Œ๋“œ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•๊ณผ ํ…Œ์ŠคํŠธ์˜ ์šฉ์ด์„ฑ, ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์žฅ์ ์„ ์ œ๊ณตํ•œ๋‹ค.

๋™์ž‘ ๋ฐฉ์‹

\Gate::denies(..)์—์„œ \Gate๋Š” ์–ด๋””์—์„œ ์™”์„๊นŒ?

  • \๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ๊ธ€๋กœ๋ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ผ๋ผ๋ฒจ์€ app์„ ์‹œ์ž‘ํ•  ๋•Œ class_alias ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ config/app.phpํŒŒ์ผ์— ์ž‡๋Š” aliasesํ•ญ๋ชฉ์— ์ •์˜ ๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์˜ ๋ณ„์นญ์„ ๊ธ€๋กœ๋ฒŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋“ฑ๋กํ•œ๋‹ค.

์ฆ‰, \Gate๋Š” Illuminate\Support\Facades\Gate::class์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ Gateํด๋ž˜์Šค์— ๊ฐ€๋ณด๋ฉด denies()๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋Š”๋ฐ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์ธ Facade์— ๋ณด๋ฉด __callStatic()์ด๋ผ๋Š” static ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด์žˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ •์˜๋˜์–ด์žˆ์ง€ ์•Š์€ static๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋™์ž‘ํ•˜๋Š” ๋งค์ง ๋ฉ”์„œ๋“œ๋กœ ์ด๋•Œ๋ฌธ์— ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

__callStatic()์—์„œ static::getFacadeRoot()๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ ์ธ์Šคํ„ด์Šค์—์„œ ์›๋ž˜ ์‹คํ–‰ํ–ˆ๋˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. getFacadRoot()๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ๋ด๋ณด๋ฉด static::resolveFacadeInstance()๋กœ ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ static::getFacadeAccessor()์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. getFacadeAccessor()๋Š” ๊ฐ ํŒŒ์‚ฌ๋“œ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ Gate๊ฐ€ ์œ ์ผํ•˜๊ฒŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ”๋กœ ์ด ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— Gateํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์— ์˜ํ•ด denies()๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

Last updated