If you’re anything like me — that sucks.
No but really, like me — you might be struggling to get PHP formatting working in a way you’re satisfied with; one extension formats HTML but doesn’t format whole documents, and with others I don’t get any formatting at all.
Probably user error — true. But if you’re still struggling with getting PHP formatting working in VS Code here’s what I finally figured out.
Install Extension
Inside VS Code, open up the extension side-panel and search for php-cs-fixer.
You’ll see a few with the same name so make sure you install the extension by the Junstyle.
Install The PHP Fixer File
In any folder use CURL to download the php fixer file to your working directory:
$ curl -L https://cs.symfony.com/download/php-cs-fixer-v2.phar -o php-cs-fixer
If for some reason CURL isn’t getting the file for you, go to the file’s Github Repo and download it however you want.
Make sure the file has the executable flag by running:
$ sudo chmod a+x php-cs-fixer
Make sure you can run it by running:
$ ./php-cs-fixer
You should get the program name and version number.
Move the file to a system directory that’s in the PATH:
$ sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer
Create a Config File
In your terminal — create and edit a config file in your user directory:
$ sublime ~/.php_cs
Use your favorite text editor.
Paste this config code in the editor and save:
<?php return PhpCsFixer\Config::create() ->setRules(array( '@PSR2' => true, 'array_indentation' => true, 'array_syntax' => array('syntax' => 'short'), 'combine_consecutive_unsets' => true, 'method_separation' => true, 'no_multiline_whitespace_before_semicolons' => true, 'single_quote' => true, 'binary_operator_spaces' => array( 'align_double_arrow' => false, 'align_equals' => false, ), // 'blank_line_after_opening_tag' => true, // 'blank_line_before_return' => true, 'braces' => array( 'allow_single_line_closure' => true, ), // 'cast_spaces' => true, // 'class_definition' => array('singleLine' => true), 'concat_space' => array('spacing' => 'one'), 'declare_equal_normalize' => true, 'function_typehint_space' => true, 'hash_to_slash_comment' => true, 'include' => true, 'lowercase_cast' => true, // 'native_function_casing' => true, // 'new_with_braces' => true, // 'no_blank_lines_after_class_opening' => true, // 'no_blank_lines_after_phpdoc' => true, // 'no_empty_comment' => true, // 'no_empty_phpdoc' => true, // 'no_empty_statement' => true, 'no_extra_consecutive_blank_lines' => array( 'curly_brace_block', 'extra', 'parenthesis_brace_block', 'square_brace_block', 'throw', 'use', ), // 'no_leading_import_slash' => true, // 'no_leading_namespace_whitespace' => true, // 'no_mixed_echo_print' => array('use' => 'echo'), 'no_multiline_whitespace_around_double_arrow' => true, // 'no_short_bool_cast' => true, // 'no_singleline_whitespace_before_semicolons' => true, 'no_spaces_around_offset' => true, // 'no_trailing_comma_in_list_call' => true, // 'no_trailing_comma_in_singleline_array' => true, // 'no_unneeded_control_parentheses' => true, // 'no_unused_imports' => true, 'no_whitespace_before_comma_in_array' => true, 'no_whitespace_in_blank_line' => true, // 'normalize_index_brace' => true, 'object_operator_without_whitespace' => true, // 'php_unit_fqcn_annotation' => true, // 'phpdoc_align' => true, // 'phpdoc_annotation_without_dot' => true, // 'phpdoc_indent' => true, // 'phpdoc_inline_tag' => true, // 'phpdoc_no_access' => true, // 'phpdoc_no_alias_tag' => true, // 'phpdoc_no_empty_return' => true, // 'phpdoc_no_package' => true, // 'phpdoc_no_useless_inheritdoc' => true, // 'phpdoc_return_self_reference' => true, // 'phpdoc_scalar' => true, // 'phpdoc_separation' => true, // 'phpdoc_single_line_var_spacing' => true, // 'phpdoc_summary' => true, // 'phpdoc_to_comment' => true, // 'phpdoc_trim' => true, // 'phpdoc_types' => true, // 'phpdoc_var_without_name' => true, // 'pre_increment' => true, // 'return_type_declaration' => true, // 'self_accessor' => true, // 'short_scalar_cast' => true, 'single_blank_line_before_namespace' => true, // 'single_class_element_per_statement' => true, // 'space_after_semicolon' => true, // 'standardize_not_equals' => true, 'ternary_operator_spaces' => true, // 'trailing_comma_in_multiline_array' => true, 'trim_array_spaces' => true, 'unary_operator_spaces' => true, 'whitespace_after_comma_in_array' => true, )) //->setIndent("\t") ->setLineEnding("\n") ;
If you like your fat arrows aligned change this settings to true.
Save and Exit.
Point VS Code To Your Config File
Open VS Code Preferences > Settings.
Search for php-cs-fixer.
About 4 options down you’ll see a field for the config file path. Enter the absolute path like so:
Set Extension as Default Formatter
Open any .php file in VS Code right click in the editor and click on Format Document.
If that formatted your code then great! If you have other formatters associated with PHP then click on Configurein the dialog in the bottom right and select php cs fixer from the dropdown.
Success?
If all went well you should see your PHP cleaned up a bit.
You’ll probably wanna tweak that config file. The array syntax is set to short which bugs me and you’ll probably be bugged by a few things too.
Anyway, let me know if this didn’t work for you. Hopefully I didn’t miss anything.
Code on web assassins!