๐ PHP ์๋ค๋จ๊ธฐ - PHP ์์ฒด์ ๋ํ ์ด์ผ๊ธฐ
2024-04-03
๐ฉ ๊ฐ์
์ ๊ฐ ๐ PHP : ๊ฐ๋จํ๊ฒ ์์๋ณด๋ PHP์ ์ญ์ฌ๋ฅผ ์์ฑํ ์ง ๋ฐ๋ ์ด ์ง๋ฌ์ต๋๋ค. ์ฌ์ค PHP์ ๊ด๋ จ๋ ๊ธ์ ์์ฑํ๋ ค๋ ์๋๋ฅผ ์ฌ๋ฌ๋ฒ ํ์๋๋ฐ, ๋ ์์ธํโฆ๋ ์ ํํโฆํ๊ณ ์์ฌ๋ด๋ค๊ฐ ๊ฒฐ๊ตญ ๋๋ถ๋ถ์ ๊ธ์ด ๋ง๋ฌด๋ฆฌ๋์ง ๋ชปํ ์ฑ ๋ฐฉ์น๋์์ต๋๋ค.
์ด์ ๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ ์ด์ ๋ฐฉ์นํ์ง ์๊ณ ๊ธ์ ๋ง์ด ๋จ๊ธฐ์๋ ๋ชฉ์ ์ ๊ฐ๊ณ ๊ธ์ ์ ์ด๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ๋๋ฌด ์ ํํ๊ฑฐ๋ ๋ง์ ์ ๋ณด๋ฅผ ๋ด๊ธฐ๋ณด๋จ ๊ทธ์ ์๋ค์ฒ๋ผ ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก PHP์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โ์ผ๋จ, ๊ทธ๋์ PHP ์ธ์ด๋ ๊ฐ์๊ธฐ ์์?
PHP๋ ๋์ ์ผ๋ก ์นํ์ด์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ๊ฐ๋ฐ๋ ์๋ฒ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ์๋ ๋ชฉ์ ๋๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํธ์ ๋๋ค. ๋๋ฌธ์ PHP์ ๋ํ ๊ฐ์ข๋ค๋ ์ธ์ด์ ๋ํด ์ ๊น ๋ค๋ฃฌ ๋ค ๋ฐ๋ก ์น ๊ฐ๋ฐ์ ์ฐ๊ด์ง์ด ์ค๋ช ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํ์ง๋ง ์ ๋ PHP๋ก ์์ฑ๋ ๊ฒ์ ์๋ฒ ํ๋ก๊ทธ๋จ(PMMP
)์ ์ฌ์ฉํ๊ธฐ ์ํด์ PHP๋ฅผ ์ตํ๊ณ ๊ณ์ ์ฌ์ฉ์ค์ด๊ธฐ ๋๋ฌธ์ ์น๋ณด๋จ PHP ์ธ์ด ์์ฒด์ ๋ ์ง์คํด์ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๊ณ ์ถ์์ต๋๋ค.
๐ PHP์ ๋ง์ค์ฝํธ
The elePHPant ์์ฆ์ ์ธ์ด๋ค๋ง๋ค ๋ง์ค์ฝํธ๊ฐ ์์ฃ . PHP์ ๋ง์ค์ฝํธ๋ ์์ ์๋ elePHPant
๋ผ๋ ์ด๋ฆ์ ํ๋ ์ฝ๋ผ๋ฆฌ์
๋๋ค. Vincent Pontier์ ์ํด ๋์์ธ๋ ์ด ๋ง์ค์ฝํธ๋ ๋ฌธ๋ PHP
๋ฅผ ์์์ ๋ณด๋ฉด ์ฝ๋ผ๋ฆฌ์ฒ๋ผ ๋ณด์ธ๋ค๋ ์๊ฐ์ ๋ง๋ค์ด์ก์ต๋๋ค.
์ด ๋ง์ ๋ฃ๊ณ โ์ฅ ๋์ฒด ๋ฌด์จ ๋ง์ด์ผ?โ ๋ผ๊ณ ์๊ฐํ์ ๋ถ์ด ์๋ค๋ฉด, ์ ๋ ๋๊ฐ์ด ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ดํด๋ฅผ ๋์๋๋ฆด ์ฌ์ง์ ๊ตฌํด์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ค๊ฐ์ PHP ๊ธ์๊ฐ ๋ ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค
๐ PHP ๊ด๋ จ ํต๊ณ
๐W3Techs : 2022.01 ~ 2023.01 ์๋ฒ ์ฌ์ด๋ ์ธ์ด ์ ์ ์จ
๐stackoverflow : 2022 ์คํฌ๋ฆฝํธยท๋งํฌ์ ์ธ์ด ์ ํธ๋ยท๊ธฐํผ๋
W3Techs์ ํต๊ณ์ ๋ฐ๋ฅด๋ฉด 2023๋ ์๋ PHP๋ 77.8%์ ๋์ ์ ์ ์จ๋ก 1์๋ฅผ ๊พธ์คํ ์ ์งํ๊ณ ์๊ณ , ์๋ง์ ๋ฉ์ด์ ์ฌ์ดํธ์์๋ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ํ์ง๋ง Stackoverflow ์ ์ค๋ฌธ์กฐ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋์ ๊ธฐํผ๋(dreaded)๋ก ๋ฌด๋ ค ํ์ 9์์ ๋ญํฌํ์ต๋๋ค. ์ด์ฒ๋ผ PHP๋ ๋์ ์ ์ ์จ์ ๋นํด ๊ฐ๋ฐ์๋ค์๊ฒ๋ ๋ฏธ์๋ฐ๋ ์ธ์ด์ ์ํฉ๋๋ค.
PHP๋ก ์ด์์ค์ธ ์ฌ์ดํธ ๋ชฉ๋ก:
โจ PHP์ ํน์ง
C์ Perl ๋ฌธ๋ฒ ๊ธฐ๋ฐ
PHP์ ๋ฌธ๋ฒ์ ๊ธฐ์กด ๊ฐ๋ฐ์๋ค์ ์ ์
์ ์ํด C์ Perl ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ง์ด ์ฐจ์ฉํ์ต๋๋ค. ํนํ ๋ณ์๋ช
์์ $
์ ๋ถ์ฌ์ผ ํ๋ ๊ฒ๊ณผ ๋ชจ๋ ๋ฐฐ์ด์ด ์ฐ๊ด ๋ฐฐ์ด(map)๋ก ์๋ํ๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ ๋ฌธ์์ด ๊ฒฐํฉ ์ฐ์ฐ์๊ฐ +
๊ฐ ์๋ .
์ด๋ผ๋ ์ ๋ฑ์ด Perl์์ ์ฐจ์ฉ๋ ๋ํ์ ์ธ ๋ฌธ๋ฒ์ด์ฃ .
HTML ํ์ผ์ ํฌํจ๋๋ ๊ตฌ์กฐ
PHP๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๋ ์ผ์ข
์ ํ
ํ๋ฆฟ ์ธ์ด๋ก ์์๋์ด PHP 2.0์ ๋ค์ด์๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฌ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฌํ ์ญ์ฌ๋ก ์ธํด ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌ๋ฆฌ HTML ๋ฌธ์ ๋ด์ ์ฝ์
๋๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์๋๋ฐ์. PHP ํ์ผ์ ์๋์ ๊ฐ์ด <?php ... ?>
ํ๊ทธ ์์ PHP ์ฝ๋๊ฐ ์ฝ์
๋๊ณ , ์ด ์ธ์ ๋ถ๋ถ์ echo
ํค์๋๋ก ์ถ๋ ฅ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ค์ ์ ํตํด <?
(SGML) ๋ <%
(ASP)๋ก ์์ํ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ ๋งํ ๊ฒฝ์ฐ์ ์ด์์ฑ ๋ฌธ์ ๋ก ์ธํด <?php
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
HTML ๋ด์ ์ฝ์ ๋ ์์
- PHP ์ฝ๋ ๋ด์ฉ
<html> <body> <?php echo "Hello World!"; ?> </body> </html>
- ์ถ๋ ฅ ๊ฒฐ๊ณผ
<html> <body> Hello World! </body> </html>
ํ์ง๋ง, ์คํฌ๋ฆฝํธ ํ์ผ๋ก์ ์ฌ์ฉ๋ ๋๋ ์คํ๋ ค ?>
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค. ์ด์ ๋ ?>
๋ก ๋ซํ ์ดํ์ ๊ณต๋ฐฑ์ด๋ ์ค๋ฐ๊ฟ์ด ์์ผ๋ฉด ์๋์น ์์ ์ถ๋ ฅ์ด ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ํ PHP์๋ <?=
๋ผ๋ ๋จ์ถ ํํ์ด ์์ต๋๋ค. ์ด ํํ์ <?php echo
๋ฅผ ๋์ ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ PHP์ ๋ชจ๋ ๋ช
๋ น๋ฌธ์ C์ธ์ด์ฒ๋ผ ์ธ๋ฏธ์ฝ๋ก (;
)์ผ๋ก ๋๋์ผ ํฉ๋๋ค. ํ์ง๋ง ?>
ํ๊ทธ๋ก ๋ซํ๋ฉด ์ธ๋ฏธ์ฝ๋ก ์ ์๋ตํด๋ ๋ฉ๋๋ค.
<?= "Hello World!" ?>
์คํ์์ค
PHP๋ ์คํ์์ค๋ก ๊ฐ๋ฐ๋์ด ์์ด ๋๊ตฌ๋ ์์ค์ฝ๋๋ฅผ ์ด์ด๋ณผ ์ ์๊ณ , ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํน์ง์ผ๋ก ์ธํด PHP๋ ๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ์ฌ๋๋ฐ๊ณ ์์ต๋๋ค.
PHP๋ ์๋ Karma๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ฒด๊ฐ๋ฐ ์์ค๊ด๋ฆฌ ์์คํ ์ ์ด์ฉํ๋ฉฐ ์์ค ๋ฒ์ ์ ๊ด๋ฆฌํ์ง๋ง, 2021๋ ์ ๊ณต๊ฒฉ์๋ก ์ธํด ๋ฐฑ๋์ด ์ฝ๋๊ฐ ์ฝ์ ๋ ์ฌ๊ฑด ์ดํ, Github์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ๋์์ต๋๋ค.
git.php.net
=> github.com/php
ํ์ฅ ํ๋ก๊ทธ๋จ (FFI: Foreign Function Interface)
๊ธฐ๋ณธ์ ์ผ๋ก PHP๋ C์ธ์ด๋ก ์์ฑ๋์ด ์์ต๋๋ค. ํ์ง๋ง ๋ชจ๋ ๊ธฐ๋ฅ์ PHP๋ก ๊ตฌํํ๋ฉด ์ฑ๋ฅ ๋ฉด์์๋ ํ์ฅ์ฑ ๋ฉด์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด PHP๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ง์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ํ์ฅ ํ๋ก๊ทธ๋จ์ C๋ C++๋ก ์์ฑ๋๋ฉฐ, PHP์ ๋ด๋ถ API๋ฅผ ์ฌ์ฉํ์ฌ PHP์ ์ํธ ์์ฉํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก MySQL์ด๋ XML, JSON, SQLite ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ด์ฅ ํ์ฅ๋ค์ด ์ง์๋๊ณ , PECL(PHP Extension Community Library)์์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ ์ํธํ ๋ฑ์ ๋ค์ํ ํ์ฅ ํ๋ก๊ทธ๋จ๋ ๋ค์ด๋ก๋ ๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ธ์๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
PHP์ ๊ฐ์ ๋ฒ์
PHP๋ ๊ฝค๋ ๋๋ฆฌ๊ณ ๋ณด์์ฑ์ด ์ข์ง ์์ ์ธ์ด๋ก ์ ๋ช ํ์ต๋๋ค.
์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ก์ ํธ๋ค์ด ๋ง๋ค์ด์ก๋๋ฐ์. ๋ํ์ ์ผ๋ก Facebook์ HHVM
์ด๋ผ๋ ๊ฐ์๋จธ์ ์ ๋ง๋ค์ด JIT
(Just in Time)๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ ์ฉํด ์ฑ๋ฅ์ ์ต๋ํ ๋์ด์ฌ๋ ธ์ต๋๋ค.
์ฌ๋ด์ผ๋ก HHVM์ ์ด์ PHP ํธํ์ฑ์ ๋ฒ๋ฆฌ๊ณ
HACK
์ด๋ผ๋ PHP ๋ฌธ๋ฒ๊ณผ ์ ์ฌํ ์์ฒด ๊ฐ๋ฐ ์ธ์ด๋ง ํ๊ฒ์ผ๋ก ์ผ๊ณ ์์ง๋ง, ์์ง๋ ์๋์ ๊ฐ์ ๋ฐ์ดโฆ
์ด ์ธ์๋ ์์ ๋ฆฌ๋
์ค ๋ค์ดํฐ๋ธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ด๋ kphp, .NET Framework
์ฉ์ผ๋ก ์ปดํ์ผํด์ฃผ๋ PeachPie, PHP๋ฅผ PHP ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ zephir ๋ฑ ๋ค์ํ๊ณ ํฅ๋ฏธ๋ก์ด ํ๋ก์ ํธ๋ค์ด ๋ง์ด ์์ต๋๋ค.
๐ ๋ง์น๋ฉฐ
๋ง๋ฌด๋ฆฌ๊ฐ ์ข ๊ฐ์์ค๋ฝ์ง๋ง ์๊ฐ๋๋ ๋ด์ฉ๋ค์ ์ฒ์ฒํ ์ ๋ ์ค์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธ์ ์ฌ๊ธฐ์ ๋ง์น๋๋ก ํ๊ฒ ์ต๋๋ค.
PHP์ ๋ฌธ๋ฒ์ ๋ํ ์๋ค๋ ๋ค์์ ์ด์ด์ ํด๋ณด๋๋ก ํ ๊ฒ์.