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