Skip to content

Latest commit

ย 

History

History

PHP

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 

PHP ์ฝ”๋”ฉ ์Šคํƒ€์ผ

PSR-1/PSR-2/PSR-12๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋˜ ์•„๋ž˜์˜ ๊ทœ์น™์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋”ฐ๋ฅธ๋‹ค.

์ถ”๊ฐ€ ๊ทœ์น™

์ตœ์†Œ ์ง€์› ๋ฒ„์ „์€ 7.1์ด๋‹ค.

๋„ค์ด๋ฐ

  • ๋ณ€์ˆ˜๋ช…์€ $snake_case๋กœ ์ž‘์„ฑ
    • ์ด๋Š” PSR-1 4.2. Properties ๊ทœ์น™์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด๋‹ค.
  • private ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ช…์— _(underscore) prefix๋Š” ๋ถ™์ด์ง€ ๋ง ๊ฒƒ

ํƒ€์ž… ์ง€์ •

  • ์ƒˆ๋กœ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ์€ declare(strict_types=1) ์ ์šฉ
  • PHPDoc๋ณด๋‹ค ๋‚ด์žฅ ํƒ€์ž… ํžŒํŒ…์„ ์šฐ์„ ํ•˜์—ฌ ์‚ฌ์šฉ
  • ์šฉ๋„์— ๋”ฐ๋ฅธ null/false์˜ ์‚ฌ์šฉ
    • false๋Š” boolean ํ˜•์‹์˜ ํ‘œํ˜„์—๋งŒ ์‚ฌ์šฉ
    • null์€ "๊ฐ’์ด ์—†์Œ"์„ ์˜๋ฏธํ•  ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ
    • ์ดˆ๊ธฐ PHP ๋‚ด์žฅ ํ•จ์ˆ˜์˜ false๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ด€๋ก€๋ฅผ ๋”ฐ๋ฅด์ง€ ๋ง ๊ฒƒ
  • ๋ ˆํผ๋Ÿฐ์Šค(&$var)์˜ ์‚ฌ์šฉ
    • ์ฐธ์กฐ ๋ฐ˜ํ™˜์€ ์‚ฌ์šฉํ•˜์ง€ ๋ง ๊ฒƒ
    • ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์€ closure ๋ณ€์ˆ˜ ๋ฐ”์ธ๋”ฉ๋งŒ ํ—ˆ์šฉ
      $db->transactional(
        function () use (&$output) {
          $output = false;
        }
      );

๋‚ด์žฅ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ

  • ๋นˆ ๊ฐ’์„ ์ฒดํฌํ•˜๋Š” ๊ฒฝ์šฐ empty() ํ•จ์ˆ˜ ์‚ฌ์šฉ
  • ์ฐธ์กฐํ•˜๋ ค๋Š” ๋Œ€์ƒ์ด ๋ช…๋ฐฑํžˆ ์ดˆ๊ธฐํ™”๋œ ๊ฒฝ์šฐ isset() ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ธˆ์ง€
    • isset์€ undefined์™€ NULL์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ
  • compact() / extract() ์‚ฌ์šฉ ๊ธˆ์ง€
    • ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ ์–ด๋–ค ์˜ค๋ฅ˜๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
    • ๋ณ€์ˆ˜๋ฅผ ์•”๋ฌต์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€

๋ฌธ์ž์—ด

  • ''๊ณผ ""์˜ ์‚ฌ์šฉ
  • ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด์—์„œ curly brace({"$var"})์˜ ์‚ฌ์šฉ
    • IDE์ƒ์—์„œ ์‰ฝ๊ฒŒ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ด„ํ˜ธ๋กœ ๊ฐ์Œ€ ๊ฒƒ

์—ฐ์‚ฐ์ž

๋น„๊ต ์—ฐ์‚ฐ์ž

  • == / === ์˜ ์‚ฌ์šฉ
    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ===๋ฅผ ์‚ฌ์šฉ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋งŒ ==๋ฅผ ์‚ฌ์šฉ
  • ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
    • ์—ฐ์‚ฐ์ž๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉ
      • next_page = ($end_page === $total_pages) ? $end_page : ($end_page + 1);
  • ๊ธด ์กฐ๊ฑด๋ฌธ
    • &&, || ๋“ฑ์€ ๊ฐ€์žฅ ์•ž์— ์œ„์น˜์‹œํ‚ฌ ๊ฒƒ
    • ์กฐ๊ฑด๋ฌธ์ด ์—ฌ๋Ÿฌ์ค„์ผ ๊ฒฝ์šฐ ๋‹ซ๋Š” ๊ด„ํ˜ธ์™€ brace๋Š” ์ƒˆ๋กœ์šด ์ค„์— ์œ„์น˜์‹œํ‚ฌ ๊ฒƒ
      if (someCondition1 !== null
          && someCondition2 !== null
          && someCondition3 !== null
      ) {
          /* ... */
      }

์—๋Ÿฌ ์ œ์–ด ์—ฐ์‚ฐ์ž

๋ฐฐ์—ด

  • ํ•ญ์ƒ short array ๋ฌธ๋ฒ•([])์„ ์‚ฌ์šฉํ•  ๊ฒƒ

ํด๋ž˜์Šค

์˜์กด์„ฑ ๊ด€๋ฆฌ (Composer)

  • ํŒจํ‚ค์ง€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š”ย ridibooks ํ˜น์€ ridi์—ฌ์•ผ ํ•จ
  • ๊ณต๊ฐœ์šฉ ํŒจํ‚ค์ง€๋Š” @ridi/performance ํŒ€์— ์š”์ฒญํ•˜์—ฌ Packagist์— ๋“ฑ๋ก
    • ๋“ฑ๋ก๋œ ํŒจํ‚ค์ง€๋Š” Auto Update ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ridi๋ฅผ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋กœ ์ถ”๊ฐ€ํ•  ๊ฒƒ
  • ๋‚ด๋ถ€์šฉ ํŒจํ‚ค์ง€๋Š” Satis์—์„œ ๊ด€๋ฆฌ (README ์ฐธ๊ณ )
  • ๋ฐฐํฌ๋˜๋Š” ๋ฒ„์ „์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ์ ์ธ Git ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •
  • ๋ฒ„์ „ ๊ด€๋ฆฌ ์ •์ฑ…์€ Semantic Versioning์„ ๋”ฐ๋ฅผ ๊ฒƒ
    • SemVer๋ฅผ ํ†ตํ•ด ์ด ํŒจํ‚ค์ง€์— ์˜์กดํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ํ”ฝ์Šค, ๋˜๋Š” ํ•˜์œ„ ํ˜ธํ™˜ ์—ฌ๋ถ€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌ ๊ฐ€๋Šฅ
    • ํ•˜์œ„ํ˜ธํ™˜ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ CHANGELOG์— ๊ธฐ๋ก์„ ๋‚จ๊ธธ ๊ฒƒ
    • ๋‚ด์šฉ๊ณผ ํ˜•์‹์€ Doctrine2 ํ”„๋กœ์ ํŠธ ์ฐธ๊ณ 

ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

์‹ ๊ทœ๋กœ ์ƒ์„ฑ๋˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋Š” PHP The Right Way์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

  • twig ํ…œํ”Œ๋ฆฟ์€ resources ํ•˜์œ„์— ์œ„์น˜ํ•œ๋‹ค.
  • ์„œ๋น™์„ ์œ„ํ•œ ์ •์  ํŒŒ์ผ์€ public ํ•˜์œ„์— ์œ„์น˜ํ•œ๋‹ค.
  • Other Directories์— cron, docker ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

PhpStorm ์‚ฌ์šฉ์‹œ

  • PSR/PSR2 ์„ค์ • : Preferences > Editor > Code Style > PHP > Set fromโ€ฆ > PSR1/PSR2 ์„ ํƒ
  • Preferences > Editor
    • Code Style
      • Line separator (for new files): Unix and OS X (\n)
      • Right Margin (columns) : 120
    • Code Style > PHP > Wrapping and Braces > 'if()' statement
      • โœ… Place ')' on new line ย - Code Style > PHP > Code Conversion
      • โœ… Force short declaration style
    • File and Code Templates > Includes > File Header
      • PHP File Header ์˜ ๋‚ด์šฉ์„ ๋น„์šธ ๊ฒƒ
    • General > Other
      • โœ… Ensure line feed at file end on Save
  • Inspections (PHP)
    • Code Style
      • โœ… Class path doesn't match project structure
    • Probable bugs
      • โœ… Assignment in condition
      • โœ… Division by zero

PHP CodeSniffer ์‚ฌ์šฉ

  • PhpStrom ์„ค์ •๋ฒ•
    • Preferences > Languages & Frameworks > PHP > Code Sniffer Configuration ์˜ค๋ฅธํŽธ [...] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  PHP Code Sniffer path์— phpcs๊ฒฝ๋กœ ์„ค์ • (๊ฒฝ๋กœ ํ™•์ธ์€ brew info homebrew/php/php-code-sniffer)
    • Preferences > Editor > Inspections PHP - PHP Code Sniffer Validation ์— ์ฒดํฌ ์˜ค๋ฅธํŽธ Coding standard ๋ฉ”๋‰ด์—์„œ Custom ์„ ํƒ ํ›„ [...] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ruleset.xml ์„ ํƒ (ruleset ์œ„์น˜ : Ridibooks-Web/docs/lint/php)
    • ์ฐธ๊ณ  : https://confluence.jetbrains.com/display/PhpStorm/PHP+Code+Sniffer+in+PhpStorm

์ฐธ๊ณ  ์ž๋ฃŒ