ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

phpfmt

by nanch ST3

This is a stable snapshot (version 6125cf9) of the phpfmt plugin for Sublime Text

Details

Installs

  • Total 90K
  • Win 54K
  • OS X 22K
  • Linux 15K
Jan 18 Jan 17 Jan 16 Jan 15 Jan 14 Jan 13 Jan 12 Jan 11 Jan 10 Jan 9 Jan 8 Jan 7 Jan 6 Jan 5 Jan 4 Jan 3 Jan 2 Jan 1 Dec 31 Dec 30 Dec 29 Dec 28 Dec 27 Dec 26 Dec 25 Dec 24 Dec 23 Dec 22 Dec 21 Dec 20 Dec 19 Dec 18 Dec 17 Dec 16 Dec 15 Dec 14 Dec 13 Dec 12 Dec 11 Dec 10 Dec 9 Dec 8 Dec 7 Dec 6 Dec 5 Dec 4
Windows 65 76 59 24 33 30 42 49 59 54 57 29 35 47 63 57 55 19 23 32 39 59 59 43 41 29 22 53 55 67 60 53 32 32 49 59 68 65 64 39 43 52 47 70 71 67
OS X 16 17 23 15 15 8 13 16 13 18 20 10 4 16 20 24 6 2 10 8 16 13 19 19 4 10 10 15 10 19 27 10 11 4 19 11 19 12 17 6 11 9 22 21 18 24
Linux 16 16 14 7 7 3 15 14 15 21 17 3 8 17 8 15 17 8 6 9 8 18 12 7 6 6 4 12 11 23 19 10 3 9 12 12 11 18 15 6 7 12 20 17 13 14

Readme

Source
raw.​githubusercontent.​com

phpfmt support for Sublime Text 3

Installation

Requirements

  • You must have a running copy of PHP on the machine you are running Sublime Text

Plugin runs with PHP 7.0 or newer installed in the machine running the plugin.

Install this plugin through Package Manager.

  • In Sublime Text press ctrl+shift+P
  • Choose Package Control: Install Package
  • Choose phpfmt

Configuration (Windows)

  • Edit configuration file (%AppData%\Sublime Text\Packages\phpfmt\phpfmt.sublime-settings)
  • For field "php_bin" enter the path to the php.exe Example: "php_bin":"c:/PHP/php.exe"

Configuration (OS X and Linux)

  • Edit configuration file (phpfmt.sublime-settings)
  • For field "php_bin" enter the path to the php Example: "php_bin":"/usr/local/bin/php"

Settings

Prefer using the toggle options at command palette. However you might find yourself in need to setup where PHP is running, use this option below for the configuration file.

{
"php_bin":"/usr/local/bin/php",
}

The following features are available through command palette (ctrl+shift+P or cmd+shift+P) :

  • phpfmt: format now
  • phpfmt: indentation with spaces
  • phpfmt: toggle additional transformations
  • phpfmt: toggle excluded transformations
  • phpfmt: toggle skip execution when .php.tools.ini is missing
  • phpfmt: toggle autocomplete
  • phpfmt: toggle dependency autoimport
  • phpfmt: toggle format on save
  • phpfmt: toggle PSR1 - Class and Methods names
  • phpfmt: toggle PSR1
  • phpfmt: toggle PSR2
  • phpfmt: analyse this
  • phpfmt: build autocomplete database
  • phpfmt: getter and setter (camelCase)
  • phpfmt: getter and setter (Go)
  • phpfmt: getter and setter (snake_case)
  • phpfmt: generate PHPDoc block
  • phpfmt: look for .php.tools.ini
  • phpfmt: reorganize content of class
  • phpfmt: enable/disable additional transformations
  • phpfmt: troubleshoot information
  • phpfmt: update PHP binary path

Currently Supported Transformations:

  • 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 “=”.
  • 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.
  • 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 Merge 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.
  • 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.
  • 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

  • Be sure you can run PHP from the command line.
  • If you need support, please open an issue at fmt issues

The Most FAQ

I want to use sublime-phpfmt, but it needs PHP 5.6 or newer and on my production server I have PHP 5.5 or older. What should I do?

Consider installing a standalone PHP 5.6 in a separate directory and have it not configured in the environment. Within the plugin, ensure php_bin parameter is pointed to this standalone installation.

Acknowledgements