PhpStorm 2018.2 Help

Code Style. PHP

File | Settings | Editor | Code Style | PHP for Windows and Linux
PhpStorm | Preferences | Editor | Code Style | PHP for macOS
Ctrl+Alt+S icons general settings svg


Use this page to configure formatting options for PHP files. View the result in the Preview pane on the right.

Set from...

Click this link to choose the base for the current language default code style from the pop-up list, that appears. The list contains two options:

  • Language: choose this option to inherit the coding style settings from another language. Select the source language from the list, that opens. So doing, only the settings that are applicable to the current language are taken. All the other settings are not affected.

  • Predefined code style: choose this option to use the coding standards defined for a specific framework. Select one of the following frameworks from the list:

This link appears in the upper-right corner of the language-specific code style page, when applicable.

Click Reset to discard changes and return to the initial set of code style settings.

PHP-specific formatting settings for Tabs and Indents

See Common Code Style Options: Tabs and Indents for the settings that are common for all languages.

Item

Description

Indent code in PHP tags

Select this checkbox to have the code enclosed in <?php> tags indented against the opening <?php tag.

PHP-specific formatting settings for Spaces

See Common Code Style Options: Spaces for the settings that are common for all languages.

Select or clear the checkboxes to have spaces inserted, not inserted, or removed in the following PHP contexts:

Item

Description

Before Parentheses

  • Array initializer parentheses

    Select this checkbox to have a space inserted before the opening parenthesis in array declarations, such as:

    $array = array (0 => "zero", 1 => "one");

    If the checkbox is cleared, no space is inserted and the code looks as follows:

    $array = array(0 => "zero", 1 => "one");

Around Operators

  • Concatenation

    Select this checkbox to have spaces inserted before and after the concatenation operator (.) so the code looks as follows:

    echo "The result is " . $i;

    When the checkbox is cleared, no spaces are inserted around the concatenation operator so the code looks as follows:

    echo "The result is ".$i;

  • Object access operator (->)

    Select this checkbox to have spaces inserted before and after the object access operator (->) so the code looks as follows:

    $obj -> foo() -> bar();

    When the checkbox is cleared, no spaces are inserted around the object access operator so the code looks as follows:

    $obj->foo()->bar();

  • Null coalescing operator (??)

    Select this checkbox to have spaces inserted before and after the null coalescing operator (??) so the code looks as follows:

    foo() ?? bar();

    When the checkbox is cleared, no spaces are inserted around the null coalescing operator so the code looks as follows:

    foo()??bar();

  • Assignment in declare statement

    Select this checkbox to have spaces inserted before and after the assignment operator in the declare statement so the code looks as follows:

    declare(strict_types = 1);

    When the checkbox is cleared, no spaces are inserted around the assignment operator so the code looks as follows:

    declare(strict_types=1);

Before Left Brace

  • Class left brace

    Select this checkbox to have a space inserted between the class name and the opening brace in class declarations:

    class Class1 { function Foo() }

    When the checkbox is cleared, no space is inserted:

    class Class1{ function Foo() }

    Selecting or clearing the checkbox is relevant only when Braces placement in class declarations is set to End of line on the Wrapping and Braces tab.

Within

Select the checkboxes in this section to have spaces automatically inserted within the selected code code constructs.

  • Brackets

    If the checkbox is selected, spaces are always inserted. If the checkbox is cleared, spaces are never inserted.

  • Brackets around variables/expressions

    Select this checkbox to have PhpStorm insert spaces inside brackets during reformatting only if the brackets enclose a variable or an expression. This setting affects reformatting only if you have not configured force insertion of spaces inside brackets by selecting the Brackets checkbox under the Within node in the Spaces tab.

    This option helps you keep your code in accordance with the WordPress PHP Coding Standards.

    If this checkbox is cleared, the spaces insertion policy depends on the Bracketssetting regardless of the type of content inside brackets.

In Ternary Operator (?:)

Select the checkboxes in this section to have spaces automatically inserted before and after ?, before and after :, and between ? and : in ternary (conditional) operators.

Other

Select the checkboxes in this section to have spaces automatically inserted before and after commas, semicolons, unary NOT operators (!), and after type casts.
  • After type cast

    When this checkbox is selected, PhpStorm automatically inserts a space after the closing parentheses of a cast: $fst = (string) $foo;

    If the checkbox is cleared, no spaces is inserted and the casted variable sticks to the cast: $fst = (string)$foo;

PHP-specific formatting settings for Wrapping and Braces

See Common Code Style Options: Wrapping and Braces for the settings that are common for all languages.

Item

Description

Braces placement

In this section, choose the position for opening braces in declarations of namespaces, classes, and functions, in loops, and in other constructions. Choose the required position from the drop-down list, the available options are:
  • End of line - select this option to have the opening brace placed at the declaration line end.

  • Next line if wrapped - select this option to have the opening brace placed at the beginning of the line after the multiline declaration line.

  • Next line - select this option to have the opening brace placed at the beginning of the line after the declaration line.

  • Next line shifted - select this option to have the opening brace placed at the line after the declaration line being shifted to the corresponding indent level.

  • Next line each shifted - select this option to have the opening brace placed at the line after the declaration line being shifted to the corresponding indent level, and have the next line shifted to the next indent level as well.

Extends/implements list

In this section, configure wrapping and subsequent alignment of extend and implements lists:
  • Do not wrap - when this option is selected, no special wrapping style is applied.

    With this option selected, the nested alignment and braces settings are ignored.

  • Wrap if long - select this option to have lines going beyond the right margin wrapped with proper indentation.

  • Wrap always - select this option to have all elements in lists wrapped so that there is one element per line with proper indentation.

  • Chop down if long - select this option to have elements in lists that go beyond the right margin wrapped so that there is one element per line with proper indentation.

  • Align when multiline

    When this checkbox is selected, each item in an extends or an implements list, which after wrapping starts on a new line, are aligned by the first item, which remains unwrapped:

    abstract class Foo extends Class1 implements Class2, Class8 { }

    When the checkbox is cleared, the position of each item in a wrapped list is determined by the chosen indentation level.

    The status of the checkbox affects the formatting only if you have chosen to wrap lists, if the Do not wrap option is chosen, selecting or clearing the checkbox has no effect.

Extends/implements keyword

In this section, configure wrapping for the extends and implements keywords in class declarations.

If you choose the Do not wrap option, no wrapping will be applied, if you choose Wrap if long or Wrap always, each keyword and each item in an extends or implements list will be displayed on a new line:

abstract class Foo extends Class1 implements Class2, Class8 { }

Function declaration parameters

In this area, configure formatting in declarations of functions and methods.
  • Keep ')' and '{' on one line

    When this checkbox is cleared, the opening curly brace is moved to the next line:

    function Foo() { }

    When the checkbox is selected, the opening curly brace is displayed on the same line as the function parameters:

    function Foo() { }

Chained method calls

In this section, configure wrapping and subsequent alignment of chained calls.
  • Do not wrap - when this option is selected, no special wrapping style is applied.

    With this option selected, the nested alignment and braces settings are ignored.

  • Wrap if long - select this option to have lines going beyond the right margin wrapped with proper indentation.

  • Wrap always - select this option to have all elements in lists wrapped so that there is one element per line with proper indentation.

  • Chop down if long - select this option to have elements in lists that go beyond the right margin wrapped so that there is one element per line with proper indentation.

  • Align when multiline

    When the checkbox is selected, each called method, which after wrapping is positioned on a new line, is aligned by the first one, which remains unwrapped:

    $x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four;

    When the checkbox is cleared, the position of each item in a wrapped list is determined by the chosen indentation level.

    The status of the checkbox affects the formatting only if you have chosen to wrap lists, if the Do not wrap option is chosen, selecting or clearing the checkbox has no effect.

  • Place ';' on new line

    When the checkbox is cleared, the semicolon (;) is displayed after the last item in a chained call. If the checkbox is selected, the semicolon is moved to a new line:

    $x = $x->one( "a", "b" ) ->two( "c", "d", "e" ) ->three( "fg" ) ->four ;

Assignment statement

In this section, configure wrapping and subsequent alignment in assignment statements.
  • Do not wrap - when this option is selected, no special wrapping style is applied.

    With this option selected, the nested alignment and braces settings are ignored.

  • Wrap if long - select this option to have lines going beyond the right margin wrapped with proper indentation.

  • Wrap always - select this option to have all elements in lists wrapped so that there is one element per line with proper indentation.

  • Chop down if long - select this option to have elements in lists that go beyond the right margin wrapped so that there is one element per line with proper indentation.

  • Assignment sign on new line

  • Align consecutive assignments

    When this checkbox is selected, the assignment signs in consecutive assignment statements are aligned by the rightmost one:

    $y = foo( $x ); $intermediate = foo( $intermediate ); $result = $result . $y . $intermediate;

    When this checkbox is cleared, no alignment is applied:

    $y = foo( $x ); $intermediate = foo( $intermediate ); $result = $result . $y . $intermediate;

Class field/constant groups

In this section, configure wrapping and subsequent alignment within lists of class properties (fields) or class constants.
  • Align fields in columns

  • Align constants

Array initializer

In this section, configure wrapping and subsequent alignment in array declarations.
  • Do not wrap - when this option is selected, no special wrapping style is applied.

    With this option selected, the nested alignment and braces settings are ignored.

  • Wrap if long - select this option to have lines going beyond the right margin wrapped with proper indentation.

  • Wrap always - select this option to have all elements in lists wrapped so that there is one element per line with proper indentation.

  • Chop down if long - select this option to have elements in lists that go beyond the right margin wrapped so that there is one element per line with proper indentation.

  • Align when multiline

    When the checkbox is selected and the New line after '(' checkbox is cleared, each element, which after wrapping is positioned on a new line, is aligned by the first one, which remains unwrapped:

    $colours = array( "blue", "red", "white", "green", "yellow" );

    When both the Align when multiline and the New line after '(' checkboxes are selected, all the elements ae aligned according to the indentation settings:

    $colours = array( "blue", "red", "white", "green", "yellow" );

    Selecting or clearing the Align when multiline and the New line after '(' checkboxes affects the formatting only if you have chosen to wrap lists, if the Do not wrap option is chosen, the status of the checkboxes has no effect.

  • New line after '('

    When this checkbox is selected, the first element of the array is displayed on a new line and all the elements of the array are aligned according to the indentation settings, regardless of the status of the Align when multiline checkbox.

    When this checkbox is cleared, the first element of the array remains on the same line, and the other elements are aligned according to the indentation settings.

  • Place ')' on new line

Modifier list

  • Wrap after modifier list

    When this checkbox is selected, the code is wrapped after a list of visibility modifiers:

    protected function Foo() { }

    When the checkbox is cleared, no wrapping is performed:

    protected function Foo() { }

Blank lines

Use this tab to define where and how many blank lines you want PhpStorm to retain and insert in your code after reformatting. For each type of location, specify the number of blank lines to be inserted. The results are displayed in the Preview pane.

Item

Description

Keep Maximum Blank Lines

In this area, specify the number of blank lines to be kept after reformatting in the specified locations.

Minimum Blank Lines

In the text boxes in this area, specify the number of blank lines to be present in the specified locations.

PHPDoc

In this tab, configure the code style to be applied inside PHPDoc comments. Learn more about documenting PHP code at PHPDoc Comments.

Item

Description

Align parameter names

Select this checkbox to have the &<paramname> elements aligned.

Keep blank lines

Select this checkbox to suppress removing blank lines automatically.

Blank lines around parameters

Select this checkbox to have a blank line inserted above and below the section with @param tags.

Blank line before the first tag

Select this checkbox to have an blank line inserted above the first PHPDoc tag.

Align tag comments

Select this checkbox to have the description elements aligned.

Wrap long lines

Select this checkbox to have the text that exceeds the right margin wrapped to the next line.

Generated Doc Blocks

In this area, configure the code style to be applied within generated PHP documentation blocks, see PHPDoc Comments.
  • Use fully-qualified class names: select this checkbox to have PhpStorm specify fully qualified class names for properties, function parameters, return and throws values, etc.

Code Conversion

In this tab, configure the code style to be applied when performing automatic code conversion.

Item

Description

Convert True/False constants to

Select the desired option to have the true and false constants displayed either in the upper or the lower case.

Convert Null constant to

Select the desired option to have the null constants displayed either in the upper or the lower case.

Convert else if/elseif

Select the desired option to have else if and elseif constants displayed uniformly as else if or elseif.

Array declaration style

  • Force short declaration style: select this checkbox to have PhpStorm replace the array() constructs with [] in array declarations during reformatting.

    When the checkbox is cleared, the traditional literal style in array declarations is preserved after reformatting.

  • Add a comma after last element in multiline array: select this checkbox to have PhpStorm automatically insert a comma after the last item in declarations of multiline arrays to meet the required coding standard, for example, the Symfony coding standards.

See Arrays. Syntax for details.

Code Generation

In this tab, configure the code style to be applied when performing certain code generation and refactoring procedures.

Item

Description

Variable Naming Style

Select the desired option to have the generated variables displayed uniformly in Mixed case, camelCase, or snake_case.

Fields Default Visibility

Select the desired option to automatically prefix the generated class fields with private, protected, or public visibility modifiers.

Comment Code

In this area, configure the code style options to be applied to comments.
  • Line comment at first column - select this checkbox to have line comments start at the first column, without any indentation. Note that no extra blank spaces are added after the line comment characters. The checkbox is by default selected.

    When the checkbox is cleared, the line comments start from the minimum indentation within the selected code block to be commented.

  • Add a space at comment start - select this checkbox to have a space inserted between a line comment character and the first character of a commented line.

Arrangement

In this tab, define a set of rules to rearrange your PHP code according to your preferences.

Item

Description

Grouping Rules

Use this area to set the grouping rules.
  • Keep getters and setters together

    Select this checkbox to keep getter and setter methods together. By default, this checkbox is selected.

  • Keep overridden methods together

    Select this checkbox to group the overridden methods together by class and interface. In order: list, select keep or by name options.

  • Keep dependent methods together

    Select this checkbox to group the dependent methods together. In order: list, select depth-first or breadth-first options.

Matching rules

Use this area to define elements order as a list of rules, where every rule has a set of matches such as modifier or type.
  • Add - use this button to add a rule. The empty rule area opens.

  • Add Section rule - use this button to add a section rule. The section rule lets you move methods or variables into sections that you have defined.
    For example, you can create the following section rule:

    matching rule

    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

  • Remove - use this button to remove the rule from the list.

  • Edit - use this button to edit an existing rule. To see this button, navigate to the rule that you want to edit and click on the button. In pop-up window that opens, modify the rule fields.

  • Move up Move down - use these buttons to move the selected rule up or down.

Empty rule

Use this area to create a new matching rule or edit an existing one. You can select from the following filters:
  • Type - use this filter to choose constructors, methods, fields, or properties for your rule.
    Note that clicking a type keyword twice negates the condition.

  • Name - use this field to specify entry names in the rule. This filter matches only entry names, such as field names, method names, class names, etc. The filter supports regular expressions and uses a standard syntax. The match is performed against the entire name.

  • Order - use this drop-down list to select the sorting order for the rule. This option is useful when more than one element uses the same matching rule. In this case, selecting Keep order will keep the same order as was set before the rearrangement and selecting Order by Name will sort the elements with the same matching rule by their names.

Sort

This icon appears when you select Order by Name from the Order list. The icon indicates that the items in this rule are sorted alphabetically.

Last modified: 10 October 2018

See Also