분류 php

더 예쁜 PHP 코드

컨텐츠 정보

  • 조회 288 (작성일 )

본문

새 기계를 설치할 때마다 이 작업을 수행하는 방법을 연구해야 하는 데 지쳤습니다. 

그래서, 나는 당신을 위해 그것을 쓰는 것만 큼 나를 위해 이것을 쓰고 있습니다. 

VSCode에서 PHP 코드를 표시하고 형식화 하는 몇 가지 팁을 보여 드리겠습니다.


https://assertchris.io/post/2019-08-22-prettier-php-code 


기존 언어를 위한 새로운 확장 

리포지토리를 일부 CI 서비스에 연결 한 경우 독점 구성 파일이 있을 수 있습니다. 사전 처리 된 PHP 코드를 많이 작성하므로 항상 .pre 파일을 엽니 다. VSCode는 인기 없는 파일 확장자를 발견했을 때 열리는 적절한 언어를 항상 이해하지는 않습니다.

새 파일 확장자를 기존 언어와 연관 시키려면 구성 파일에 다음 코드를 추가 할 수 있습니다.

"files.associations": {
    "*.pre": "php"
}

왼쪽은 연결하려는 파일에 대한 정규식이고 오른쪽은 연결하려는 언어입니다. 자세한 내용은 https://code.visualstudio.com/docs/languages/identifiers에서 도움이 되지 않는 곳에 있습니다.


여러 언어를 동일한 언어로 연관 시킬 수 있으므로 서두르십시오.


PHP 코드 포맷 

만약 당신이 PSR-2 /12를 굳게 고수한다면,이 다음 비트는 당신에게 그렇게 유용하지 않을 것입니다. 

Prettier를 사용하여 코드 형식을 지정했습니다. JS-land의 모든 것이 사용하기 쉽고 통합되어 있기 때문입니다. 

PHP 프로젝트에서 사용되는 것을 조금 덜 일반적이지만 여기에 갑니다 ...


이것을 실행하십시오 :

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

그런 다음 package.json 파일에서 새 스크립트를 정의하십시오.

"scripts": {
    "format:php": "prettier --config=prettier.config.js --write --parser=php"
}

기본 값을 사용하거나 고유한 구성 파일을 정의 할 수도 있습니다. 이것은 prettier.config.js 파일의 모습입니다 :

(module.exports = {
    "printWidth": 120,
    "tabWidth": 4,
    "useTabs": false,
    "semi": false,
    "singleQuote": false,
    "trailingComma": "all",
    "bracketSpacing": true,
    "jsxBracketSameLine": false,
    "arrowParens": "avoid",
    "proseWrap": "never"
})

parser: "php" 부분을 스크립트 대신 config에 넣을 수 있지만 같은 프로젝트의 JS 코드는 같은 설정을 사용하여 포맷 되지 않습니다.


다음과 같이 스크립트를 사용할 수 있습니다.

npm run format:php ./source/**/*.pre

... 여기서 ./source/**/*.pre는 처리하려는 파일의 정규식입니다. Prettier가 일치하는 파일을 찾을 수 없는 경우 알려줍니다. 또한 포맷 할 수 없는 파일 (일반적으로 구문 오류로 인해)을 알려줍니다. 사전 처리 된 많은 파일에는 PHP가 지원하지 않는 구문이 포함되어 있으므로 반환이 줄어 듭니다.


저장시 코드 포맷 


서식이 스크립트 실행에 의존하는 경우에는 많이 사용하지 않을 것입니다. 즉, 커밋을 수행하기 전에 Git 후크를 설정하여 실행하지 않는 한. 그것은 나쁜 전략이 아닙니다 ...


대신 VSCode가 파일을 저장할 때마다 형식을 지정하기를 원합니다. 그러기 위해서는 사용자 지정 작업을 설정 해야 합니다. 해당 파일의 위치와 위치를 보여 주지만 다음 단계에 따라 VSCode가 새 파일을 만들 수 있습니다.


  1. 명령 팔레트를 엽니 다. macOS에서는 shift + command + p를 사용하여 수행됩니다.
  2. "작업 : 작업 구성"을 선택하십시오.
  3. "기타"를 선택하십시오

.vscode 폴더의 새 tasks.json 파일로 이동합니다.


작업을 통해 구성 할 수 있는 몇 가지 사항이 있습니다.

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run tests",
            "type": "shell",
            "command": "./scripts/test.sh",
            "windows": {
                "command": ".\\scripts\\test.cmd"
            },
            "group": "test",
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}

macOS에서 내 작업을 실행하는 데에만 관심이 있습니다 (모든 dev 시스템이 실행 중이기 때문에).


{
    "tasks": [
        {
            "label": "Format PHP",
            "type": "shell",
            "command": "npm run format:php ${file}",
            "presentation": {
                "reveal": "never"
            },
            "problemMatcher": []
        }
    ]
}

이제 명령 팔레트를 열고 "작업 : 작업 실행"으로 이동하십시오. 옵션으로 "PHP 포맷"이 표시됩니다. 작업을 실행할 수 있으며 현재 파일을 형식화 합니다. 원하는 방식으로 작업을 실행할 수 없는 경우 더 많은 문서가 있습니다.


마지막으로, 저장할 때마다 이 작업을 실행할 수 있는 방법이 필요합니다. 일치하는 확장을 위해 레이블 별로 작업을 실행하는 확장을 설치했습니다. 구성에 다음을 추가해야 했습니다.

{
    "triggerTaskOnSave.tasks": {
        "Format PHP": ["**/*.php", "**/*.pre"]
    }
}

이제 .php 또는 .pre 파일을 열고 저장하면 NPM 스크립트가 실행됩니다!