Hướng dẫn phpstorm psr-12 code style

PSR-2 đang dần là chuẩn Coding Convention phổ biển trong các dự án lập trình PHP, và đang được các PHP Framework nổi tiếng hỗ trợ như Laravel, Symfony 2… Nếu bạn đang sử dụng PHPStorm để lập trình, thì thủ thuật này sẽ giúp các bậu cấu hình format code PHP theo chuẩn PSR-2.

Cấu hình PSR-2 làm chuẩn code style mặc định cho PHPStorm

Mở PHPStorm IDE lên.  Vào [ File ] -> [ Setting ] -> [ Editor ] -> [ Code Style ] -> [ PHP ]

– Scheme: Default IDE
– Bấm vào set from…

Hướng dẫn phpstorm psr-12 code style

Chọn [ Predefined Style ] là: PSR1/PSR2

Hướng dẫn phpstorm psr-12 code style

Hướng dẫn format code trong PHPStorm

Chọn folder/file source code mà bạn muốn format, vào [ Code ] -> [ Reformat Code ]. Hoặc bấm tổ hợp phím Ctrl + Alt + L để format code.

Nguồn: vinasupport.com

PSR-12 is an extension of PSR-2, and therefore also an extension of PSR-1. The basis of PSR-12 is PSR-2 and therefore a list of differences is provided below to assist with migration but it should be considered as an independent specification.

From the php-fig site. Long story short, while not mandatory, it covers more code cases than PSR-2.

I'd like to use it in PhpStorm. Unfortunately, by default, storm doesn't offer this option. At predefined styles you have a fairly comprehensive list, but not comprehensive enough.

Hướng dẫn phpstorm psr-12 code style

Of course, I can always define the style myself doing it by hand, but that doesn't strike me as a good idea. Mostly because I WILL miss something and if there are any updates to the PSR I can't easily update it. Not to mention I can't share it properly with my team. Except maybe exporting my .idea folder.

I googled around for a plugin or something of that sort but came up empty handed.

PhpStorm 2019.3 Released: Full PHP 7.4 Support, PSR-12, WSL, MongoDB, and More

PhpStorm 2019.3 is now available! This major release is focused on performance and quality, expect a more stable and faster IDE. It also brings full support for PHP 7.4, PSR-12 code style, WSL for remote interpreters, MongoDB support, HTTP Client updates, and many usability improvements! Download PhpStorm 2019.3 In this blog post, we’ll provide a detailed overview of all the changes and things that you should know about this new version. It’s a combination of all the EAP blog posts that we’ve been publishing here over the past several months plus many other useful additions that

PhpStorm lets you reformat your code according to the requirements you've specified in your current code style scheme or the .editorconfig file. If anything is not defined in .editorconfig, it's taken from the project settings.

You can reformat a part of code, the whole file, group of files, or a directory. You can also exclude part of code or some files from the reformatting.

Reformat a code fragment

  1. In the editor, select a code fragment you want to reformat.

    Before reformatting, you can take a look at the code style settings that are applied to the selected code: press Alt+Enter and click Adjust code style settings.

  2. From the main menu, select or press Ctrl+Alt+L.

Reformat a file

  1. Either open your file in the editor and press Ctrl+Alt+Shift+L or in the Project tool window, right-click the file and select .

  2. In the dialog that opens, if you need, select the following reformatting options:

    • Optimize imports: select this option if you want to remove unused imports, add missing ones, or organize import statements.

      For more information, refer to the Optimize imports section.

    • Rearrange entries: select this option if you need to rearrange your code based on the arrangement rules specified in the code style settings.

    • Code cleanup: select this option to run the code cleanup inspections.

    • Do not keep line breaks: reformat line breaks according to the code style settings. This option overrides the setting.

Reformat code in a folder

  1. In the project view, right-click a folder and from the context menu, select Reformat Code or press Ctrl+Alt+L.

  2. In the dialog that opens, specify the necessary options and click OK.

Reformat line indents

You can reformat line indents based on the specified settings.

  1. While in the editor, select the necessary code fragment and press Ctrl+Alt+I.

  2. If you need to adjust indentation settings, in the Settings/Preferences dialog (Ctrl+Alt+S), go to .

  3. On the appropriate language page, on the Tabs and Indents tab, specify the appropriate indents options and click OK.

Automatically reformat code on save

You can configure the IDE to reformat code in modified files automatically when your changes are saved.

  1. Press Ctrl+Alt+S to open the IDE settings and select .

  2. Enable the Reformat code option.

  3. Additionally, you can configure the way the IDE will reformat your code:

    • Click Configure scope to specify the patterns of filenames and directories that you want to exclude from reformatting.

    • From the All file types list, select the types of files in which you want to reformat code.

    • Select Whole file or Changed lines if your project is under version control.

      If you select Changed lines, reformatting will apply only to the lines of code that have been changed locally, but not yet checked in to the repository.

Exclude files from reformatting

You can exclude a group of files and directories from reformatting , code arrangement, and import optimization.

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to .

  2. Switch to the Formatter tab and in the Do not format field, enter the files and directories that you want to exclude using a glob pattern.

    You can specify several glob patterns separated with a semicolon ;. If you click

    Hướng dẫn phpstorm psr-12 code style
    , the field will expand, and each pattern will be shown on a separate line.

  3. Apply the changes and close the dialog.

    Hướng dẫn phpstorm psr-12 code style

Exclude code fragments from reformatting in the editor

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to .

  2. Switch to the Formatter tab and enable the Turn formatter on/off with markers in code comments option.

  3. In the editor, at the beginning of a region that you want to exclude, create a line comment Ctrl+/ and type @formatter:off. At the end of the region, create another line comment and type @formatter:on.

    The code between the markers won't be reformatted.

The example shows two code fragments. One of them is enclosed in the @formatter :off and @formatter:on markers while the other one is not.

Hướng dẫn phpstorm psr-12 code style

The original formatting is preserved:

Hướng dẫn phpstorm psr-12 code style

The original formatting is not preserved in either code fragment:

Hướng dẫn phpstorm psr-12 code style

Keep existing formatting

You can select formatting rules which will be ignored when you reformat the code. For example, you can adjust the IDE to keep simple methods and functions in one line, whereas normally they are expanded into multiple lines after code reformatting.

  1. Go to , select your programming language, and open the Wrapping and Braces tab.

  2. In the Keep when reformatting section, select the formatting rules which you want to ignore and deselect those which should be applied.

  3. Reformat your code (Ctrl+Alt+L).

PhpStorm will reformat your code in accordance with the current style settings, keeping existing formatting for the rules which you've selected.

Rearrange code

You can rearrange your code according to the arrangement rules set in the Code Style. PHP page of the Settings/Preferences dialog.

Configure grouping rules

Grouping rules let you keep related class methods together.

  • In the Settings/Preferences dialog (Ctrl+Alt+S), go to . On the Arrangement tab, choose the grouping options in the Grouping rules area.

    Hướng dẫn phpstorm psr-12 code style

    For the Keep dependent methods together option, you can select depth-first order or breadth-first order. The former will arrange the methods according to the nesting hierarchy; the latter will group together the sibling methods from the same nesting level.

    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function nested1() { $this->nested2(); } private function nested2() { } private function child2() { } }

    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function child2() { } private function nested1() { $this->nested2(); } private function nested2() { } }

Create matching rules

Matching rules let you define elements order as a list of rules, where every rule has a set of matching conditions, such as modifier or type.

  • In the Settings/Preferences dialog (Ctrl+Alt+S), go to . On the Arrangement tab, click and provide the rule parameters in the Matching rules area.

    • Use the Type and Modifier filters to choose the code constructs and their visibility modifiers that should be regulated by the rule. Note that double-clicking a filter negates the condition.

    • Use the Name field to specify entry names the rule should affect. This filter matches only entry names, such as property names, method names, class names, and so on. The filter supports regular expressions and uses a standard syntax. The match is performed against the entire name.

    • To sort code entries alphabetically, select the appropriate matching rules entry and set the Order field to order by name.

      Hướng dẫn phpstorm psr-12 code style

    You can also create groups (aliases) of rules and refer to them when creating a new matching rule.

Create rule aliases

With aliases, you can group several arrangement rules into a single entity and refer to it when you adding a new matching rule.

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to . On the Arrangement tab, click .

  2. In the Rules Alias Definitions dialog that opens, add a group name and its rules.

    Hướng dẫn phpstorm psr-12 code style

The created alias can now be referred to when adding a matching rule.

Hướng dẫn phpstorm psr-12 code style

Create section rules

Section rules let you move methods or variables into the sections that you have defined.

  • In the Settings/Preferences dialog (Ctrl+Alt+S), go to . On the Arrangement tab, click and provide the rule parameters in the Matching rules area.

    For example, you can create the following section rule:

    Hướng dẫn phpstorm psr-12 code style

    After the arrangement, methods in the class will be rearranged as specified in the created section rule and will be surrounded by comments:

    //methods start public function test() {} private function a() { return 1; } static function r() {} //methods end

Rearrange code entries

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), go to .

  2. Select a language for which you want to create arrangement rules.

  3. On the Arrangement tab, specify the appropriate options such as grouping and matching rules.

  4. Click OK to save the changes.

  5. In the editor, select the code entries you want to rearrange and from the main menu, select .

Automatically rearrange code on save

You can configure the IDE to rearrange code elements in modified files automatically when your changes are saved.

  1. Press Ctrl+Alt+S to open the IDE settings and select .

  2. Enable the Rearrange code option.

    Additionally, you can click Configure arrangement rules to specify the rules for reordering code elements for the selected language.

Last modified: 01 August 2022