PHP formatter for Sublime Text 4, with PHP 8 support. Core for vscode/cursor/windsurf phpfmt plugin
By
driade
Created February 19, 2023 , last updated March 26, 2026 .
Jul Jun May Apr Mar Feb Jan
Dec 2025
Nov Oct Sep Aug
2026-W33 | installs: 15 | removals: 8 | upgrades: 10
2026-W33 | installs: 15 | removals: 8 | upgrades: 10
2026-W33 | installs: 15 | removals: 8 | upgrades: 10
2026-W32 | installs: 20 | removals: 10 | upgrades: 23
2026-W32 | installs: 20 | removals: 10 | upgrades: 23
2026-W32 | installs: 20 | removals: 10 | upgrades: 23
2026-W31 | installs: 20 | removals: 5 | upgrades: 21
2026-W31 | installs: 20 | removals: 5 | upgrades: 21
2026-W31 | installs: 20 | removals: 5 | upgrades: 21
2026-W30 | installs: 23 | removals: 9 | upgrades: 24
2026-W30 | installs: 23 | removals: 9 | upgrades: 24
2026-W30 | installs: 23 | removals: 9 | upgrades: 24
2026-W29 | installs: 22 | removals: 6 | upgrades: 17
2026-W29 | installs: 22 | removals: 6 | upgrades: 17
2026-W29 | installs: 22 | removals: 6 | upgrades: 17
2026-W28 | installs: 25 | removals: 10 | upgrades: 18
2026-W28 | installs: 25 | removals: 10 | upgrades: 18
2026-W28 | installs: 25 | removals: 10 | upgrades: 18
2026-W27 | installs: 18 | removals: 3 | upgrades: 62
2026-W27 | installs: 18 | removals: 3 | upgrades: 62
2026-W27 | installs: 18 | removals: 3 | upgrades: 62
2026-W26 | installs: 15 | removals: 9 | upgrades: 79
2026-W26 | installs: 15 | removals: 9 | upgrades: 79
2026-W26 | installs: 15 | removals: 9 | upgrades: 79
2026-W25 | installs: 20 | removals: 4 | upgrades: 36
2026-W25 | installs: 20 | removals: 4 | upgrades: 36
2026-W25 | installs: 20 | removals: 4 | upgrades: 36
2026-W24 | installs: 16 | removals: 13 | upgrades: 70
2026-W24 | installs: 16 | removals: 13 | upgrades: 70
2026-W24 | installs: 16 | removals: 13 | upgrades: 70
2026-W23 | installs: 21 | removals: 16 | upgrades: 55
2026-W23 | installs: 21 | removals: 16 | upgrades: 55
2026-W23 | installs: 21 | removals: 16 | upgrades: 55
2026-W22 | installs: 0 | removals: 0 | upgrades: 0
2026-W22 | installs: 0 | removals: 0 | upgrades: 0
2026-W22 | installs: 0 | removals: 0 | upgrades: 0
2026-W21 | installs: 30 | removals: 9 | upgrades: 46
2026-W21 | installs: 30 | removals: 9 | upgrades: 46
2026-W21 | installs: 30 | removals: 9 | upgrades: 46
2026-W20 | installs: 24 | removals: 9 | upgrades: 84
2026-W20 | installs: 24 | removals: 9 | upgrades: 84
2026-W20 | installs: 24 | removals: 9 | upgrades: 84
2026-W19 | installs: 18 | removals: 5 | upgrades: 69
2026-W19 | installs: 18 | removals: 5 | upgrades: 69
2026-W19 | installs: 18 | removals: 5 | upgrades: 69
2026-W18 | installs: 14 | removals: 8 | upgrades: 101
2026-W18 | installs: 14 | removals: 8 | upgrades: 101
2026-W18 | installs: 14 | removals: 8 | upgrades: 101
2026-W17 | installs: 21 | removals: 10 | upgrades: 136
2026-W17 | installs: 21 | removals: 10 | upgrades: 136
2026-W17 | installs: 21 | removals: 10 | upgrades: 136
2026-W16 | installs: 24 | removals: 12 | upgrades: 167
2026-W16 | installs: 24 | removals: 12 | upgrades: 167
2026-W16 | installs: 24 | removals: 12 | upgrades: 167
2026-W15 | installs: 16 | removals: 10 | upgrades: 264
2026-W15 | installs: 16 | removals: 10 | upgrades: 264
2026-W15 | installs: 16 | removals: 10 | upgrades: 264
2026-W14 | installs: 17 | removals: 6 | upgrades: 632
2026-W14 | installs: 17 | removals: 6 | upgrades: 632
2026-W14 | installs: 17 | removals: 6 | upgrades: 632
2026-W13 | installs: 23 | removals: 11 | upgrades: 1,010
2026-W13 | installs: 23 | removals: 11 | upgrades: 1,010
2026-W13 | installs: 23 | removals: 11 | upgrades: 1,010
2026-W12 | installs: 13 | removals: 7 | upgrades: 1,085
2026-W12 | installs: 13 | removals: 7 | upgrades: 1,085
2026-W12 | installs: 13 | removals: 7 | upgrades: 1,085
2026-W11 | installs: 28 | removals: 12 | upgrades: 1,651
2026-W11 | installs: 28 | removals: 12 | upgrades: 1,651
2026-W11 | installs: 28 | removals: 12 | upgrades: 1,651
2026-W10 | installs: 28 | removals: 9 | upgrades: 658
2026-W10 | installs: 28 | removals: 9 | upgrades: 658
2026-W10 | installs: 28 | removals: 9 | upgrades: 658
2026-W09 | installs: 39 | removals: 16 | upgrades: 473
2026-W09 | installs: 39 | removals: 16 | upgrades: 473
2026-W09 | installs: 39 | removals: 16 | upgrades: 473
2026-W08 | installs: 27 | removals: 12 | upgrades: 983
2026-W08 | installs: 27 | removals: 12 | upgrades: 983
2026-W08 | installs: 27 | removals: 12 | upgrades: 983
2026-W07 | installs: 34 | removals: 15 | upgrades: 1,111
2026-W07 | installs: 34 | removals: 15 | upgrades: 1,111
2026-W07 | installs: 34 | removals: 15 | upgrades: 1,111
2026-W06 | installs: 33 | removals: 23 | upgrades: 962
2026-W06 | installs: 33 | removals: 23 | upgrades: 962
2026-W06 | installs: 33 | removals: 23 | upgrades: 962
2026-W05 | installs: 25 | removals: 15 | upgrades: 1,014
2026-W05 | installs: 25 | removals: 15 | upgrades: 1,014
2026-W05 | installs: 25 | removals: 15 | upgrades: 1,014
2026-W04 | installs: 23 | removals: 14 | upgrades: 461
2026-W04 | installs: 23 | removals: 14 | upgrades: 461
2026-W04 | installs: 23 | removals: 14 | upgrades: 461
2026-W03 | installs: 28 | removals: 13 | upgrades: 1,970
2026-W03 | installs: 28 | removals: 13 | upgrades: 1,970
2026-W03 | installs: 28 | removals: 13 | upgrades: 1,970
2026-W02 | installs: 31 | removals: 9 | upgrades: 476
2026-W02 | installs: 31 | removals: 9 | upgrades: 476
2026-W02 | installs: 31 | removals: 9 | upgrades: 476
2026-W01 | installs: 22 | removals: 11 | upgrades: 36
2026-W01 | installs: 22 | removals: 11 | upgrades: 36
2026-W01 | installs: 22 | removals: 11 | upgrades: 36
2025-W52 | installs: 20 | removals: 14 | upgrades: 75
2025-W52 | installs: 20 | removals: 14 | upgrades: 75
2025-W52 | installs: 20 | removals: 14 | upgrades: 75
2025-W51 | installs: 23 | removals: 8 | upgrades: 70
2025-W51 | installs: 23 | removals: 8 | upgrades: 70
2025-W51 | installs: 23 | removals: 8 | upgrades: 70
2025-W50 | installs: 33 | removals: 14 | upgrades: 61
2025-W50 | installs: 33 | removals: 14 | upgrades: 61
2025-W50 | installs: 33 | removals: 14 | upgrades: 61
2025-W49 | installs: 37 | removals: 15 | upgrades: 74
2025-W49 | installs: 37 | removals: 15 | upgrades: 74
2025-W49 | installs: 37 | removals: 15 | upgrades: 74
2025-W48 | installs: 36 | removals: 11 | upgrades: 93
2025-W48 | installs: 36 | removals: 11 | upgrades: 93
2025-W48 | installs: 36 | removals: 11 | upgrades: 93
2025-W47 | installs: 30 | removals: 18 | upgrades: 144
2025-W47 | installs: 30 | removals: 18 | upgrades: 144
2025-W47 | installs: 30 | removals: 18 | upgrades: 144
2025-W46 | installs: 37 | removals: 16 | upgrades: 235
2025-W46 | installs: 37 | removals: 16 | upgrades: 235
2025-W46 | installs: 37 | removals: 16 | upgrades: 235
2025-W45 | installs: 44 | removals: 26 | upgrades: 393
2025-W45 | installs: 44 | removals: 26 | upgrades: 393
2025-W45 | installs: 44 | removals: 26 | upgrades: 393
2025-W44 | installs: 35 | removals: 26 | upgrades: 1,294
2025-W44 | installs: 35 | removals: 26 | upgrades: 1,294
2025-W44 | installs: 35 | removals: 26 | upgrades: 1,294
2025-W43 | installs: 41 | removals: 24 | upgrades: 178
2025-W43 | installs: 41 | removals: 24 | upgrades: 178
2025-W43 | installs: 41 | removals: 24 | upgrades: 178
2025-W42 | installs: 48 | removals: 22 | upgrades: 87
2025-W42 | installs: 48 | removals: 22 | upgrades: 87
2025-W42 | installs: 48 | removals: 22 | upgrades: 87
2025-W41 | installs: 47 | removals: 14 | upgrades: 103
2025-W41 | installs: 47 | removals: 14 | upgrades: 103
2025-W41 | installs: 47 | removals: 14 | upgrades: 103
2025-W40 | installs: 36 | removals: 16 | upgrades: 118
2025-W40 | installs: 36 | removals: 16 | upgrades: 118
2025-W40 | installs: 36 | removals: 16 | upgrades: 118
2025-W39 | installs: 48 | removals: 21 | upgrades: 181
2025-W39 | installs: 48 | removals: 21 | upgrades: 181
2025-W39 | installs: 48 | removals: 21 | upgrades: 181
2025-W38 | installs: 35 | removals: 13 | upgrades: 348
2025-W38 | installs: 35 | removals: 13 | upgrades: 348
2025-W38 | installs: 35 | removals: 13 | upgrades: 348
2025-W37 | installs: 38 | removals: 14 | upgrades: 1,248
2025-W37 | installs: 38 | removals: 14 | upgrades: 1,248
2025-W37 | installs: 38 | removals: 14 | upgrades: 1,248
2025-W36 | installs: 35 | removals: 12 | upgrades: 663
2025-W36 | installs: 35 | removals: 12 | upgrades: 663
2025-W36 | installs: 35 | removals: 12 | upgrades: 663
2025-W35 | installs: 50 | removals: 21 | upgrades: 137
2025-W35 | installs: 50 | removals: 21 | upgrades: 137
2025-W35 | installs: 50 | removals: 21 | upgrades: 137
2025-W34 | installs: 36 | removals: 13 | upgrades: 204
2025-W34 | installs: 36 | removals: 13 | upgrades: 204
2025-W34 | installs: 36 | removals: 13 | upgrades: 204
2025-W33 | installs: 32 | removals: 14 | upgrades: 252
2025-W33 | installs: 32 | removals: 14 | upgrades: 252
2025-W33 | installs: 32 | removals: 14 | upgrades: 252
0 20 40
Weekly Installs
0 1K 2K
Weekly Upgrades
2026-W13 | upgrades: 1,010
1075.0.0
2026-W12 | upgrades: 1,085
1074.0.0
2026-W11 | upgrades: 1,651
1073.0.0
2026-W10 | upgrades: 658
1072.0.0 / 1071.0.0
2026-W07 | upgrades: 1,111
1070.0.0
2026-W06 | upgrades: 962
1069.0.0 / 1068.0.0
2026-W05 | upgrades: 1,014
1067.0.0
2026-W03 | upgrades: 1,970
1066.0.0 / 1065.0.0
2026-W02 | upgrades: 476
1064.0.0 / 1063.0.0 / ...
1064.0.0 / 1063.0.0 / 1062.0.0 / 1061.0.0 / 1060.0.0
2025-W43 | upgrades: 178
1059.0.0
2025-W36 | upgrades: 663
1058.0.0 / 1057.0.0 / ...
1058.0.0 / 1057.0.0 / 1056.0.0 / 1055.0.0
Installations:
recent average 28 per week,
176,162 in total
Installations minus removals
Upgrades
176,162
installs
74
stars
Links
Versions
1075.0.0
·
2026-03-26 20:40
More
PHPFmt for Sublime Text 4
PHPFmt is a PHP code formatter tailored for Sublime Text 4 with full support for PHP 8.x. It's a continuation of the phpfmt_stable project, with added PHP 8 compatibility and numerous bug fixes.
Features
PHP 8 Support : Seamlessly format PHP >= 5.6 code.
Rich Formatting Options : Includes PSR-1, PSR-2, and WordPress coding standards, among others.
Customization : Supports a wide array of transformations and formatting tweaks.
Easy Integration : Simple setup and configuration within Sublime Text.
Installation Requirements
PHP 5.6 or newer installed on your system.
Sublime Text 4.
Steps
Open Sublime Text and press Ctrl+Shift+P.
Select Package Control: Install Package.
Search for phpfmt and install it.
Configuration Windows Edit the configuration file at %AppData%\Sublime Text\Packages\phpfmt\phpfmt.sublime-settings and set the php_bin path:
{
"php_bin": "c:/PHP/php.exe"
}
macOS and Linux Edit phpfmt.sublime-settings and set the php_bin path:
{
"php_bin": "/usr/local/bin/php"
}
You may find an example configuration file in https://github.com/driade/phpfmt8/blob/master/driade.sublime-settings , where you can see how to configure the extension.
Usage PHPFmt provides a variety of commands accessible via the command palette (Ctrl+Shift+P or Cmd+Shift+P):
phpfmt: format now
phpfmt: toggle format on save
phpfmt: toggle PSR2
... and more.
AddMissingParentheses Add extra parentheses in new instantiations.
AliasToMaster Replace function aliases to their masters - only basic syntax alias.
AlignConstVisibilityEquals Vertically align "=" of visibility and const blocks.
AlignDoubleArrow Vertically align T_DOUBLE_ARROW (=>).
AlignDoubleSlashComments Vertically align "//" comments.
AlignEquals Vertically align "=".
AlignSuperEquals Vertically align "=", ".=", "&=", ">>=", etc.
AlignGroupDoubleArrow Vertically align T_DOUBLE_ARROW (=>) by line groups.
AlignPHPCode Align PHP code within HTML block.
AlignTypehint Vertically align function type hints.
AllmanStyleBraces Transform all curly braces into Allman-style.
AutoPreincrement Automatically convert postincrement to preincrement.
AutoSemicolon Add semicolons in statements ends.
CakePHPStyle Applies CakePHP Coding Style
ClassToSelf "self" is preferred within class, trait or interface.
ClassToStatic "static" is preferred within class, trait or interface.
ConvertOpenTagWithEcho Convert from "<?=" to "<?php echo ".
DocBlockToComment Replace docblocks with regular comments when used in non structural elements.
DoubleToSingleQuote Convert from double to single quotes.
EchoToPrint Convert from T_ECHO to print.
EncapsulateNamespaces Encapsulate namespaces with curly braces
GeneratePHPDoc Automatically generates PHPDoc blocks
IndentTernaryConditions Applies indentation to ternary conditions.
IndentPipeOperator Applies indentation to the pipe operator (|>).
JoinToImplode Replace implode() alias (join() -> implode()).
LeftWordWrap Word wrap at 80 columns - left justify.
LongArray Convert short to long arrays.
MergeElseIf Merge if with else.
SplitElseIf Split if with else.
MergeNamespaceWithOpenTag Ensure there is no more than one linebreak before namespace
MildAutoPreincrement Automatically convert postincrement to preincrement. (Deprecated pass. Use AutoPreincrement instead).
NewLineBeforeReturn Add an empty line before T_RETURN.
OrganizeClass Organize class, interface and trait structure.
OrderAndRemoveUseClauses Order use block and remove unused imports.
OnlyOrderUseClauses Order use block - do not remove unused imports.
OrderMethod Organize class, interface and trait structure.
OrderMethodAndVisibility Organize class, interface and trait structure.
PHPDocTypesToFunctionTypehint Read variable types from PHPDoc blocks and add them in function signatures.
PrettyPrintDocBlocks Prettify Doc Blocks
PSR2EmptyFunction Merges in the same line of function header the body of empty functions.
PSR2MultilineFunctionParams Break function parameters into multiple lines.
ReindentAndAlignObjOps Align object operators.
ReindentSwitchBlocks Reindent one level deeper the content of switch blocks.
ReindentEnumBlocks Reindent one level deeper the content of enum blocks.
RemoveIncludeParentheses Remove parentheses from include declarations.
RemoveSemicolonAfterCurly Remove semicolon after closing curly brace.
RemoveUseLeadingSlash Remove leading slash in T_USE imports.
ReplaceBooleanAndOr Convert from "and"/"or" to "&&"/"||". Danger! This pass leads to behavior change.
ReplaceIsNull Replace is_null($a) with null === $a.
RestoreComments Revert any formatting of comments content.
ReturnNull Simplify empty returns.
ShortArray Convert old array into new array. (array() -> [])
SmartLnAfterCurlyOpen Add line break when implicit curly block is added.
SortUseNameSpace Organize use clauses by length and alphabetic order.
SpaceAroundControlStructures Add space around control structures.
SpaceAfterExclamationMark Add space after exclamation mark.
SpaceAroundParentheses Add spaces inside parentheses.
SpaceAroundExclamationMark Add spaces around exclamation mark.
SpaceBetweenMethods Put space between methods.
StrictBehavior Activate strict option in array_search, base64_decode, in_array, array_keys, mb_detect_encoding. Danger! This pass leads to behavior change.
StrictComparison All comparisons are converted to strict. Danger! This pass leads to behavior change.
StripExtraCommaInArray Remove trailing commas within array blocks
StripNewlineAfterClassOpen Strip empty lines after class opening curly brace.
StripNewlineAfterCurlyOpen Strip empty lines after opening curly brace.
StripNewlineWithinClassBody Strip empty lines after class opening curly brace.
StripSpaces Remove all empty spaces
StripSpaceWithinControlStructures Strip empty lines within control structures.
TightConcat Ensure string concatenation does not have spaces, except when close to numbers.
TrimSpaceBeforeSemicolon Remove empty lines before semi-colon.
UpgradeToPreg Upgrade ereg_* calls to preg_*
WordWrap Word wrap at 80 columns.
WrongConstructorName Update old constructor names into new ones. http://php.net/manual/en/language.oop5.decon.php
YodaComparisons Execute Yoda Comparisons.
What does it do?
Before
After
<?php
for($i = 0; $i < 10; $i++)
{
if($i%2==0)
echo "Flipflop";
}
<?php
for ($i = 0; $i < 10; $i++) {
if ($i%2 == 0) {
echo "Flipflop";
}
}
<?php
$a = 10;
$otherVar = 20;
$third = 30;
<?php
$a = 10;
$otherVar = 20;
$third = 30;
This can be enabled with the option "enable_auto_align"
<?php
namespace NS\Something;
use \OtherNS\C;
use \OtherNS\B;
use \OtherNS\A;
use \OtherNS\D;$a = new A();
$b = new C();
$d = new D();
<?php
namespace NS\Something;use \OtherNS\A;
use \OtherNS\C;
use \OtherNS\D;
$a = new A();
$b = new C();
$d = new D();
note how it sorts the use clauses, and removes unused ones
What does it do? - PSR version
Before
After
<?php
for($i = 0; $i < 10; $i++)
{
if($i%2==0)
echo "Flipflop";
}
<?php
for ($i = 0; $i < 10; $i++) {
if ($i%2 == 0) {
echo "Flipflop";
}
}
Note the identation of 4 spaces.
<?php
class A {
function a(){
return 10;
}
}
<?php
class A
{
public function a()
{
return 10;
}
}
Note the braces position, and the visibility adjustment in the method a().
<?php
namespace NS\Something;
use \OtherNS\C;
use \OtherNS\B;
use \OtherNS\A;
use \OtherNS\D;$a = new A();
$b = new C();
$d = new D();
<?php
namespace NS\Something;use \OtherNS\A;
use \OtherNS\C;
use \OtherNS\D;
$a = new A();
$b = new C();
$d = new D();
note how it sorts the use clauses, and removes unused ones
Troubleshooting Ensure PHP is accessible from the command line. If issues arise, open an issue here .
Contributing Contributions are welcome! Please submit pull requests or issues with detailed information and code samples.
VSCode If you're using Visual Studio Code, please consider installing vscode-phpfmt extension by @kokororin
This extension leverages the same phpfmt8 engine, providing seamless PHP formatting directly within VS Code.
Acknowledgements