Loadingโ€ฆ

์ด PHP ํฌ๋งทํ„ฐ ์ •๋ณด ์˜จ๋ผ์ธ PHP Beautifier

๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ, ๋น ๋ฅธ ํ•ดํ‚น ๋˜๋Š” ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ์ฝ”๋“œ ์กฐ๊ฐ์—์„œ ์ง€์ €๋ถ„ํ•œ PHP ์ฝ”๋“œ๊ฐ€ ์žˆ๋‚˜์š”? ์ด ์˜จ๋ผ์ธ PHP ํฌ๋งทํ„ฐ๋Š” ๊ณต์‹ PHP ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ Prettier๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ผ๊ด€๋œ ๋“ค์—ฌ์“ฐ๊ธฐ, ๊ฐ„๊ฒฉ ๋ฐ ๋ฐฐ์—ด๋กœ PSR-12 ์Šคํƒ€์ผ ์ถœ๋ ฅ์„ ๋ช‡ ์ดˆ ๋งŒ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Laravel, Symfony, WordPress, API ๋ฐ CLI์— ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ด PHP ํฌ๋งทํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”?

  • ํ˜„๋Œ€ PHP ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์œ„ํ•œ PSR-12 ํ˜ธํ™˜ ํฌ๋งทํŒ…
  • Prettier + @prettier/plugin-php ๊ธฐ๋ฐ˜์œผ๋กœ ์•ˆ์ •์ ์ด๊ณ  ์ผ๊ด€๋œ ๊ฒฐ๊ณผ๋ฌผ ์ œ๊ณต
  • ๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ, ์ŠคํŽ˜์ด์Šค vs ํƒญ, ์ค„ ๋ฐ”๊ฟˆ/๊ธธ์ด ์˜ต์…˜
  • ๊ฐ„๊ฒฉ, ๋“ค์—ฌ์“ฐ๊ธฐ, ๋ฐฐ์—ด, ์ œ์–ด ๊ตฌ์กฐ ๋ฐ ์ค‘๊ด„ํ˜ธ ์ •๊ทœํ™”
  • .php, .phtml, .php5, .php4 ๋ฐ .inc ํŒŒ์ผ ์ง€์›
  • ๋น ๋ฅธ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ํฌ๋งทํŒ…, ํ•„์š”์‹œ ์•ˆ์ „ํ•œ ๋ฐฑ์—”๋“œ๋กœ ์ž๋™ ์ „ํ™˜
  • Laravel, Symfony, WordPress, ์ปค์Šคํ…€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ ˆ๊ฑฐ์‹œ ์•ฑ์— ์ ํ•ฉ

๐Ÿ”ง 4๋‹จ๊ณ„๋กœ PHP ์ฝ”๋“œ๋ฅผ ์•„๋ฆ„๋‹ต๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• for php-formatter

1

1. ์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋˜๋Š” ๋“œ๋กญ

PHP ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘๊ธฐ์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ `.php` / `.phtml` / `.inc` ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜์„ธ์š”. ๋„๊ตฌ๊ฐ€ PHP ๊ตฌ๋ฌธ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ํฌ๋งทํŒ…์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

2

2. ํฌ๋งทํŒ… ์˜ต์…˜ ๊ตฌ์„ฑ

๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ, ์ŠคํŽ˜์ด์Šค ๋˜๋Š” ํƒญ ์‚ฌ์šฉ ์—ฌ๋ถ€, ์„ ํ˜ธํ•˜๋Š” ์ค„ ๋ฐ”๊ฟˆ/๊ธธ์ด๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์€ ๋Œ€๋ถ€๋ถ„์˜ PSR-12 ์Šคํƒ€์ผ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

3

3. "ํฌ๋งทํŒ…" ํด๋ฆญ

**ํฌ๋งทํŒ…**์„ ํด๋ฆญํ•˜์—ฌ Prettier์˜ PHP ์—”์ง„์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๊ฐ€ ๊ฑฐ์˜ ์ฆ‰์‹œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

4

4. ๊ฒ€ํ† , ๋ณต์‚ฌ ๋ฐ ์ปค๋ฐ‹

ํฌ๋งทํŒ…๋œ ์ถœ๋ ฅ์„ ๊ฒ€ํ† ํ•œ ํ›„ ํŽธ์ง‘๊ธฐ์— ๋‹ค์‹œ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ `.php` ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ์ •๋ฆฌ๋œ ๋ฒ„์ „์„ ์ปค๋ฐ‹ํ•˜์—ฌ ํ–ฅํ›„ diff๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”.

๊ธฐ์ˆ  ์‚ฌ์–‘

ํ‘œ์ค€ ๋ฐ ๊ตฌ๋ฌธ ์ง€์›

PHP ํฌ๋งทํ„ฐ๋Š” ํด๋ž˜์‹ ๊ตฌ๋ฌธ์„ ์›ํ™œํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ ํ˜„๋Œ€ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋งž๊ฒŒ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ์ง€์›๋น„๊ณ 
PSR-12 ์ •๋ ฌโœ… ์˜ˆPSR-12 ๋ฐ ์ผ๋ฐ˜์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ด€ํ–‰๊ณผ ๋„๋ฆฌ ์ผ์น˜ํ•˜๋Š” ์˜๊ฒฌ ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ.
PHP 7+ ๊ตฌ๋ฌธโœ… ์˜ˆ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ์Šค์นผ๋ผ ํƒ€์ž… ํžŒํŠธ, ๋ฐ˜ํ™˜ ํƒ€์ž…, ๋„๋Ÿฌ๋ธ” ํƒ€์ž… ๋“ฑ.
PHP 8+ ๊ธฐ๋Šฅโœ… ์˜ˆ์†์„ฑ, ์œ ๋‹ˆ์–ธ ํƒ€์ž…, ์ƒ์„ฑ์ž ํ”„๋กœ๋ชจ์…˜, ๋งค์น˜ ํ‘œํ˜„์‹, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜.
์งง์€ ๋ฐฐ์—ด ๊ตฌ๋ฌธโœ… ์˜ˆ์ ์ ˆํ•œ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ํ˜„๋Œ€์ ์ธ `[ ... ]` ์Šคํƒ€์ผ๋กœ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
Heredoc / Nowdocโœ… ์˜ˆ๋‚ด์šฉ์„ ๋ณด์กดํ•˜๋ฉด์„œ ์ฃผ๋ณ€ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
ํ˜ผํ•ฉ PHP + HTMLโœ… ์˜ˆ์ž„๋ฒ ๋””๋“œ HTML์„ ํฌํ•จํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ `.php` ํ…œํ”Œ๋ฆฟ์„ ํฌ๋งทํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌ ๋ฐ ๋ ˆ์ด์•„์›ƒ ๊ทœ์น™

Prettier์˜ PHP ์—”์ง„์€ ๋ ˆ์ด์•„์›ƒ์—๋งŒ ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹คโ€”์ฝ”๋“œ์˜ ๋™์ž‘์€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

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

์‹คํ–‰ ๋ชจ๋ธ ๋ฐ ์ œํ•œ

๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธก๋ฉด๊ฐ’ / ๋™์ž‘์ฐธ๊ณ 
์‹คํ–‰ ์—”์ง„Prettier + @prettier/plugin-phpํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
ํด๋ฐฑ๋ณด์•ˆ `/api/php-formatter` ๋ฐฑ์—”๋“œPHP ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
ํƒ€์ž„์•„์›ƒ์•ฝ 25์ดˆํฌ๋งทํŒ…์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ์š”์ฒญ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
์ตœ๋Œ€ ์ž…๋ ฅ ํฌ๊ธฐ (ํ…์ŠคํŠธ)์•ฝ 2MBํฌ๋งทํ„ฐ ๋กœ์ง์˜ ๊ฐ•๋ ฅํ•œ ๊ฐ€๋“œ๋ ˆ์ผ.
์ตœ๋Œ€ ํŒŒ์ผ ํฌ๊ธฐ (์—…๋กœ๋“œ)์•ฝ 5MB๋„๊ตฌ์˜ `maxFileSizeBytes` ์„ค์ •์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
๋Œ€๊ทœ๋ชจ ๋ชจ๋…ธ๋ ˆํฌ๋‚˜ ๋ฒŒํฌ ๋ฆฌํŒฉํ„ฐ๋ง์˜ ๊ฒฝ์šฐ, ์˜จ๋ผ์ธ ๋„๊ตฌ์— ์˜์กดํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋กœ์ปฌ๋กœ Prettier๋‚˜ PHP-CS-Fixer๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ

์ด ๋„๊ตฌ๋Š” ๊ณ ๋„๋กœ ๋ฏผ๊ฐํ•œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ณด๋‹ค๋Š” ์ผ์ƒ์ ์ธ ๊ฐœ๋ฐœ ์Šค๋‹ˆํŽซ์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ธก๋ฉด๋™์ž‘
ํด๋ผ์ด์–ธํŠธ ์ธก ํฌ๋งทํŒ…๋ธŒ๋ผ์šฐ์ €์˜ Prettier ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์„ ํ˜ธ ๊ฒฝ๋กœ.์ผ๋ฐ˜์ ์ธ ์กฐ๊ฑด์—์„œ ์ฝ”๋“œ๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฐฑ์—”๋“œ ํด๋ฐฑPHP ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ์ฝ”๋“œ๋Š” HTTPS๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ๋œ ํฌ๋งทํŒ… ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.ํฌ๋งทํŒ…๋งŒ์„ ์œ„ํ•œ ์ž„์‹œ ์ž…๋ ฅ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
์ €์žฅ์›๋ณธ ์ž…๋ ฅ์˜ ์žฅ๊ธฐ ์ €์žฅ์€ ์˜๋„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ง‘๊ณ„๋œ ์˜ค๋ฅ˜/์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ๋งŒ ์ˆ˜์ง‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋ฒ” ์‚ฌ๋ก€๋น„๋ฐ€, ์•ก์„ธ์Šค ํ† ํฐ ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์–ด๋–ค ์˜จ๋ผ์ธ ํฌ๋งทํ„ฐ์—๋„ ๋ถ™์—ฌ๋„ฃ์ง€ ๋งˆ์„ธ์š”.๋ณด์•ˆ์— ๋ฏผ๊ฐํ•œ ์ฝ”๋“œ๋Š” ๋กœ์ปฌ ๋„๊ตฌ์™€ CI์—์„œ ๊ด€๋ฆฌํ•˜์„ธ์š”.

๋ช…๋ น์ค„ PHP ํฌ๋งทํŒ… (Prettier & PHP-CS-Fixer)

ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ž‘์—…ํ•  ๋•Œ๋Š” ๋กœ์ปฌ ๋„๊ตฌ๊ฐ€ ์ „์ฒด ์ €์žฅ์†Œ์— ๊ฑธ์ณ ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Node / npm

PHP ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ Prettier ์„ค์น˜

npm install --save-dev prettier @prettier/plugin-php

ํ”„๋กœ์ ํŠธ์— Prettier์™€ PHP ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ PHP ํŒŒ์ผ ํฌ๋งทํŒ…

npx prettier --write src/Example.php --parser php

์ด ์˜จ๋ผ์ธ ๋„๊ตฌ์™€ ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋‚ด ๋ชจ๋“  PHP ํŒŒ์ผ ํฌ๋งทํŒ…

npx prettier "src/**/*.php" --parser php --write

์ „์ฒด ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ํฌ๋งทํŒ…ํ•ฉ๋‹ˆ๋‹ค.

PHP-CS-Fixer

Composer๋กœ PHP-CS-Fixer ์ „์—ญ ์„ค์น˜

composer global require friendsofphp/php-cs-fixer

CLI ๋„๊ตฌ ๋ชจ์Œ์— ๊ฐ•๋ ฅํ•œ PHP ์ „์šฉ ์Šคํƒ€์ผ ํ”ฝ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

PSR-12 ๊ทœ์น™์œผ๋กœ ์‹คํ–‰

php-cs-fixer fix src --rules=@PSR12

`src` ์•„๋ž˜์˜ ๋ชจ๋“  PHP ํŒŒ์ผ์— PSR-12๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ผํšŒ์„ฑ ์ •๋ฆฌ๋ฅผ ํ•œ ํ›„, CI ๋ฐ ์ปค๋ฐ‹ ์ „ ํ›…์—์„œ Prettier๋‚˜ PHP-CS-Fixer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ํŒ€์ด ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜์„ธ์š”.

PHP Beautifier์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€

๋ผ๋ผ๋ฒจ / ์‹ฌํฌ๋‹ˆ / API ๋ฐฑ์—”๋“œ

๋ฆฌํŒฉํ† ๋ง์ด๋‚˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ „์— ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, DTO๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • HTTP ์ปจํŠธ๋กค๋Ÿฌ์™€ ํผ ํ•ธ๋“ค๋Ÿฌ์˜ ์„œ์‹์„ ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ์„œ๋น„์Šค ํด๋ž˜์Šค์™€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ API ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
// Before
class OrderController extends Controller{public function store(Request $request){$order=$this->service->create($request->all());return response()->json($order,201);}}
// After
class OrderController extends Controller
{
  public function store(Request $request)
  {
    $order = $this->service->create($request->all());

    return response()->json($order, 201);
  }
}

์›Œ๋“œํ”„๋ ˆ์Šค & ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค

๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์˜ค๋ž˜๋œ PHP 5/7 ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜„๋Œ€์  ํ‘œ์ค€์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ๋””๋ฒ„๊น… ์ „์— ํ…Œ๋งˆ์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ๋ฅผ ์•„๋ฆ„๋‹ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํŠœํ† ๋ฆฌ์–ผ์—์„œ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐํ•œ ์ง€์ €๋ถ„ํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ ˆ๊ฑฐ์‹œ ํŒŒ์ผ์„ ์ ์ง„์ ์œผ๋กœ PSR-12 ๊ทœ์น™์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ต์œก ๋ฐ ์ฝ”๋“œ ๋ฆฌ๋ทฐ

์ค‘๊ด„ํ˜ธ ์œ„์น˜๋ณด๋‹ค๋Š” ๋…ผ๋ฆฌ์™€ ์•„ํ‚คํ…์ฒ˜์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ•™์ƒ๋“ค์—๊ฒŒ ์ผ๊ด€๋œ ์Šคํƒ€์ผ์ด ๊ฐ€๋…์„ฑ์„ ์–ด๋–ป๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ค๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ์ด์ „/์ดํ›„ ์˜ˆ์ œ๋ฅผ ์ฒจ๋ถ€ํ•˜์—ฌ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ๊ณผ ๋ฌธ์„œ์˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์ •์ƒ ํ™•์ธ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
// ์˜ˆ์ œ ์—ฐ์Šต: ํ•™์ƒ๋“ค์—๊ฒŒ ์„œ์‹์ด ์ ์šฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜๋„๋ก ์š”์ฒญ
if($user&&$user->isAdmin()){logAction($user,"login");}

โ“ Frequently Asked Questions

โ“์ด ๋„๊ตฌ๋Š” ์ตœ์‹  PHP 8 ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋‚˜์š”?

์˜ˆ. ์ด ํฌ๋งทํ„ฐ๋Š” ํƒ€์ž… ํžŒํŠธ, ์œ ๋‹ˆ์–ธ ํƒ€์ž…, ์ƒ์„ฑ์ž ํ”„๋กœ๋ชจ์…˜, ์†์„ฑ, ๋งค์น˜ ํ‘œํ˜„์‹, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•œ ์ผ๋ฐ˜์ ์ธ ์ตœ์‹  PHP ๊ตฌ๋ฌธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”งํƒญ ๋„ˆ๋น„๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ณต๋ฐฑ ๋Œ€์‹  ํƒญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. ๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ(1โ€“8)์™€ ๋“ค์—ฌ์“ฐ๊ธฐ์— ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ• ์ง€ ํƒญ์„ ์‚ฌ์šฉํ• ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋งทํ„ฐ๋Š” ํ•ด๋‹น ์„ค์ •์„ ํŒŒ์ผ ์ „์ฒด์— ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“์ค„ ๋ฐ”๊ฟˆ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋‚˜์š”?

์ค„ ๋ฐ”๊ฟˆ / ์ค„ ๊ธธ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค„์ด ์–ผ๋งˆ๋‚˜ ๋„“์–ด์•ผ ํ•˜๋Š”์ง€ ํžŒํŠธ๋ฅผ ์ค๋‹ˆ๋‹ค. 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋งค์šฐ ํฐ ๋‚ด๋ถ€ ์ œํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค„ ๋ฐ”๊ฟˆ์„ ํšจ๊ณผ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”์ œ ์ฝ”๋“œ๊ฐ€ ์„œ๋ฒ„์— ์—…๋กœ๋“œ๋˜๋‚˜์š”?

์ด ๋„๊ตฌ๋Š” Prettier๋ฅผ ํ†ตํ•œ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ํฌ๋งทํŒ…์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. PHP ์—”์ง„์„ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์—์„œ ๋กœ๋“œํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ํฌ๋งทํŒ…์„ ์œ„ํ•ด ๋ณด์•ˆ๋œ API๋กœ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ž…๋ ฅ์€ ์ผ์‹œ์ ์ด๋ฉฐ ์žฅ๊ธฐ๊ฐ„ ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ๋งค์šฐ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ™์—ฌ๋„ฃ๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงฎ์„œ์‹ ์ง€์ •์ด ๋‚ด PHP ์ฝ”๋“œ ์‹คํ–‰ ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ๋ฏธ์น ๊นŒ์š”?

ํฌ๋งทํ„ฐ๋Š” ๋ ˆ์ด์•„์›ƒ๋งŒ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹คโ€”๊ณต๋ฐฑ, ๋“ค์—ฌ์“ฐ๊ธฐ, ์ค„ ๋ฐ”๊ฟˆ ๋ฐ ์œ ์‚ฌํ•œ ์š”์†Œ๋“ค. ์˜๋„์ ์œผ๋กœ ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ์ž๋™ ๋ฆฌํŒฉํ† ๋ง ํ›„์—๋Š” ํ•ญ์ƒ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

โš™๏ธ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ์–ด๋–ป๊ฒŒ ๊ฐ•์ œํ•˜๋‚˜์š”?

ํ”„๋กœ์ ํŠธ์™€ CI ํŒŒ์ดํ”„๋ผ์ธ์—์„œ Prettier์™€ PHP ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” PHP-CS-Fixer๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ์˜จ๋ผ์ธ ๋„๊ตฌ๋Š” ๋น ๋ฅธ ์ˆ˜์ •์„ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ํ”„๋ก ํŠธ์—”๋“œ์ž…๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์Šคํƒ€์ผ ๊ฐ•์ œ์—๋Š” ๋กœ์ปฌ ๋„๊ตฌ๊ฐ€ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

Pro Tips

Best Practice

CI ํŒŒ์ดํ”„๋ผ์ธ์— ์„œ์‹ ์ง€์ • ๋‹จ๊ณ„(Prettier ๋˜๋Š” PHP-CS-Fixer)๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ์‹์ด ์ง€์ •๋˜์ง€ ์•Š์€ PHP๊ฐ€ `main`์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”.

Best Practice

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด๊ธฐ ์ „์— ํฌ๋งทํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ diff๊ฐ€ ๋™์ž‘ ๋ณ€๊ฒฝ์— ์ง‘์ค‘ํ•˜๊ณ  ๊ณต๋ฐฑ์— ์ง‘์ค‘ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”.

Best Practice

๋Œ€๊ทœ๋ชจ ๋ฆฌํŒฉํ† ๋ง์˜ ๊ฒฝ์šฐ ์ „์šฉ ๋ธŒ๋žœ์น˜์—์„œ ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๋ฒˆ ํฌ๋งทํ•˜๊ณ  ๋ณ‘ํ•ฉํ•œ ๋‹ค์Œ ๋ณ„๋„์˜ PR์—์„œ ๋…ผ๋ฆฌ์  ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

Best Practice

์˜จ๋ผ์ธ ๋„๊ตฌ๋ฅผ ๊ณต์œ  ํ„ฐ๋ฏธ๋„์ฒ˜๋Ÿผ ์ทจ๊ธ‰ํ•˜์„ธ์š”: ํ”„๋กœ๋•์…˜ ๋น„๋ฐ€๊ณผ ๋‚ด๋ถ€ ํ‚ค๋ฅผ ์›น ์–‘์‹์— ๋ถ™์—ฌ๋„ฃ์ง€ ๋งˆ์„ธ์š”.

Additional Resources

Other Tools