1. ์์ฝ ๋ต๋ณโ
KEY WORD
:๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
,ํด๋์ค ์์ค์ ๊ณต์ ์์
,๊ฐ์ฒด ์งํฅ ์๋ฐ
,์จ๊ฒจ์ง ์์กด์ฑ ๋ฌธ์
,๋จ์ ํ ์คํธ๊ฐ ์ด๋ ค์
static ํค์๋๋ฅผ ์ฌ์ฉํ ๋ณ์ ํน์ ๋งค์๋๋ ์ปดํ์ผ์์ ์ ๋ฑ ํ๋ฒ๋ง Method ์์ญ์ ํ ๋น๋ ๋ค์, ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์๊น์ง ์ ์ง๋ฉ๋๋ค.
์ด๋ฌํ ํน์ฑ ๋์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํจ์จ์ ์ด๊ณ , ํด๋์ค ์์ค์ ๊ณต์ ์์์ผ๋ก ์ฌ์ฉ๋์ด์ผ ํ๋ ๋ถ๋ณ ์์๋ Utill ํจ์๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ง๋ง static์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๊ฐํ ๋ถ์์ฉ์ด ๋๋ฐ๋ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ ์ ์ ์ ํด์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ๋ก, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์๋ฐํ๋ ํค์๋ ์
๋๋ค.
static ๋ฉค๋ฒ ๋ณ์๋ฅผ ํ์ฉํ๋ ํด๋์ค์ ๊ฐ์ฒด๋ ์์ ์ ์ํ
๋ฅผ ์ค์ค๋ก ์๋ฒฝํ๊ฒ ์ ์ดํ์ง ๋ชปํ๋ฉฐ, ํ ๊ฐ์ฒด๋ ์๋น์ค์ ์ํด ์์ ์ ์ํ๊ฐ ๋ณ๋๋ ์ ์์ต๋๋ค. ์ด๋ '๊ตฌํ ๋ก์ง์ด ์ฒ ์ ํ ์ธ๋ถ์ ๊ฒฉ๋ฆฌ๋์ด ๊ฐ๋ ค์ ธ์ผ ํ๋ค. '๋ผ๋ ์บก์ ํ์ ์์น ์๋ฐฐ ์
๋๋ค.
๋ํ OOP์ ๋ํ์ ์ธ ํน์ง์ธ ๋คํ์ฑ์ ์๋ฆฌ๋ฅผ ์ ๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค. static์ ์ฌ์ฉํ ๋งค์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋ถ๊ฐํ๋ฉฐ, ์ธํฐํ์ด์ค์์ ์ ์ธ์ด ๋ถ๊ฐํฉ๋๋ค. ๋ํ ์ถ์ ๋งค์๋๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋คํ์ฑ์ด๋ผ๋ OOP์ ์ฅ์ ์ ์ฌ์ฉํ ์ ์๊ฒํ๋ ํค์๋ ์
๋๋ค.
๋ ๋ฒ์งธ๋ก, ์จ๊ฒจ์ง ์์กด์ฑ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
ํน์ ๊ฐ์ฒด์์ ํ ํด๋์ค์ static ๋ณ์๋ ๋งค์๋ ํ์ฉ ์, ์์กด์ฑ ๊ด๊ณ๊ฐ ์ฝ๋ ์ ๋ช
์์ ์ผ๋ก ๋ณด์ด์ง ์์ต๋๋ค. ์ด๋ ์ ์ง๋ณด์์ ํจ์จ์ฑ์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆฝ๋๋ค. ๋ํ static ๋ณ์ ํน์ ๋งค์๋๋ฅผ ์ง์ ์ฌ์ฉํจ์ผ๋ก, ๊ฒฐํฉ๋๊ฐ ๋์์ง๋๋ค.
์ธ ๋ฒ์งธ๋ก ๋จ์ ํ
์คํธ๊ฐ ๊ทน๋ช
ํ๊ฒ ์ด๋ ค์์ง๋๋ค.
OOP ํ๊ฒฝ์์๋ ์์กด์ฑ ์๋ ๋จ์ ํ
์คํธ๋ฅผ ์ํด, ์์กดํ๊ณ ์๋ ๊ตฌํ์ฒด๋ค์ ๊ฐ์ง ๊ฐ์ฒด๋ก ๋์ฒด ์ฃผ์
(Mocking) ํ ๋ค ํ
์คํธ ํฉ๋๋ค. ํ๋ฐ, ์ด Mocking์ ํ๋ก์ ํจํด์ ์ด์ฉํด ํ
์คํธ ์คํ ์, ๋์ ์ผ๋ก ์ค์ ๊ฐ์ฒด๋ฅผ ํ๋ก์ ๊ฐ์ฒด๋ก ๊ฐ์ธ์ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ์์
๋๋ค.
ํ์ง๋ง, static ๋งค์๋์ ๊ฒฝ์ฐ, ์ปดํ์ผ ์๊ฐ์ ์ด๋ฏธ ํธ์ถ๋์ด ๋งค์๋ ์์ญ์ ํฌํจ๋๋ฏ๋ก, ์ด๋ฌํ ๋ชจํน์ด ์ด๋ ต์ต๋๋ค. (static ๋งค์๋์ ๋ํ ๊ฐ์ง ํจ์๋ฅผ ๋ง๋๋ Power Mocking์ด ๋์์ผ๋ ์ค์ ์ด ๋ ๋ณต์ก)
๋ค ๋ฒ์งธ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฌธ์ ์
๋๋ค.
์์ ํด๋์ค ๋น ๋จ ํ๋์ ํจ์ ํน์ ๋ณ์๋ง Method ์์ญ์ ํ ๋น๋๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด๋ง๋ค ๊ณต๊ฐ์ ํ ๋น ๋ฐ๋ ๋ฉค๋ฒ ๋ณ์, ํจ์๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ์ข๋ค๋ ์ฅ์ ๋ ์์์ต๋๋ค. ํ์ง๋ง, Method ์์ญ์ GC์ ๋์์ด ์๋์ฌ์, ์๋น์ค ๋ด์์ ๋ ์ด์ ํ์ ์์ด๋, ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์๊น์ง ์์ด์ง์ง ์์ต๋๋ค. ์ด๋ฌํ static ํค์๋ ์ฌ์ฉ์ด ์ฆ์์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ๋์์ฑ ์ ์ด๊ฐ ๋์ง ์์ต๋๋ค.
static์ Thread safe ํ์ง ์๊ธฐ ๋๋ฌธ์, static ํค์๋๋ก ์ด ๋ณ์๋ ํจ์๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฎ์ด์ฐ๊ธฐ ๋๊ฑฐ๋, ์๋ฑํ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๋ฑ ๋์์ฑ ๋ฌธ์ ์ ๋
ธ์ถ๋์ด ์์ต๋๋ค.
2. ์์ธ ์ค๋ช ๐
- PHP์์ static ํค์๋๊ฐ ์ ์ ์ข์์ง ์ค๋ช
- static ํค์๋๋ ์ ๋ง GC์ ์ํฅ์ ๋ฐ์ง ์์๊น?
- overriding๊ณผ overhiding์ ์ฐจ์ด