vim code specification tool php-cs-fixer.phar
(Refer to https://github.com/FriendsOfPHP/PHP-CS-Fixer)
INSTALL
<code>curl http:<span>//get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer</span> sudo chmod a<span>+</span>x php<span>-cs</span><span>-fixer</span> sudo mv php<span>-cs</span><span>-fixer</span> /usr/<span>local</span>/bin/php<span>-cs</span><span>-fixer</span></code>
At this point, you can directly use php-cs-fixer to format the code
USAGE
(Currently supported levels are psr0 , psr1, psr2, symfony, contrib)
<code> php<span>-cs</span><span>-fixer</span> fix test<span>.</span>php <span>--</span>level<span>=</span>psr2 php<span>-cs</span><span>-fixer</span> fix <span>.</span><span>/</span><span>--</span>level<span>=</span>psr2</code>
This does not satisfy a vimer’s little mind
vim-php-cs-fixer
INSTALL
<code>Bundle <span>'stephpy/vim-php-cs-fixer</span></code>
CONFIGURE
.vimrc (reference: https://github.com/stephpy/vim-php-cs-fixer)
<code><span>" If php-cs-fixer is in $PATH, you don't need to define line below "</span><span>let</span> g:php_cs_fixer_path = <span>"~/php-cs-fixer.phar"</span><span>" define the path to the php-cs-fixer.phar let g:php_cs_fixer_level = "</span>psr2<span>" "</span> which level ?(psr0, psr1, psr2, symfony) <span>let</span> g:php_cs_fixer_config = <span>"default"</span><span>" configuration let g:php_cs_fixer_php_path = "</span>php<span>" "</span> Path <span>to</span> PHP <span>" If you want to define specific fixers: "</span><span>let</span> g:php_cs_fixer_fixers_list = <span>"linefeed,short_tag,indentation"</span><span>let</span> g:php_cs_fixer_enable_default_mapping = <span>1</span><span>" Enable the mapping by default (<leader>pcd) let g:php_cs_fixer_dry_run = 0 "</span> Call command <span>with</span> dry-run <span>option</span><span>let</span> g:php_cs_fixer_verbose = <span>0</span><span>" Return the output of command if 1, else an inline information.</span></code>
We found that
<code><span><span><span>let g:php_cs_fixer_enable_default_mapping = 1 "</span> Enable the mapping by <span>default</span> (<leader>pcd)</span></span></code>
the above configuration shortcut key is pcd. In actual operation, it will be found that it is extremely error-prone and too It’s grown
.vim/bundle/vim-php-cs-fixer/plugin/php-cs-fixer.vim
<code>if(g:php_cs_fixer_enable_default_mapping == 1) nnoremap <span><<span>silent</span>></span><span><<span>leader</span>></span>pcd :call PhpCsFixerFixDirectory()<span><<span>CR</span>></span> nnoremap <span><<span>silent</span>></span><span><<span>leader</span>></span>pcf :call PhpCsFixerFixFile()<span><<span>CR</span>></span> endif</code>
can be found
pcd is a formatted directory
pcf is a format file
Now you can replace pcd, and pcf with your favorite shortcut keys
ps: It is nominal mode, which is a shortcut key prefix. The default is, you can use the map command in vim to view it
Appendix
<code>psr0 [PSR-<span>0</span>] Classes must be <span>in</span> a path <span>that</span> matches their namespace, be <span>at</span> least one namespace deep, <span>and</span><span>the</span><span>class</span><span>name</span> should match <span>the</span><span>file</span><span>name</span>. encoding [PSR-<span>1</span>] PHP code MUST use only UTF-<span>8</span><span>without</span> BOM (remove BOM). short_tag [PSR-<span>1</span>] PHP code must use <span>the</span> long <?php ?> tags <span>or</span><span>the</span> short-echo <?= ?> tags; <span>it</span> must <span>not</span> use <span>the</span> other tag variations. braces [PSR-<span>2</span>] The body <span>of</span> each structure MUST be enclosed <span>by</span> braces. Braces should be properly placed. Body <span>of</span> braces should be properly indented. elseif [PSR-<span>2</span>] The keyword elseif should be used <span>instead of</span><span>else</span><span>if</span> so <span>that</span> all control keywords looks like single <span>words</span>. eof_ending [PSR-<span>2</span>] A <span>file</span> must always <span>end</span><span>with</span> a single empty line feed. function_call_space [PSR-<span>2</span>] When making a method <span>or</span> function call, there MUST NOT be a <span>space</span><span>between</span><span>the</span> method <span>or</span> function <span>name</span><span>and</span><span>the</span> opening parenthesis. function_declaration [PSR-<span>2</span>] Spaces should be properly placed <span>in</span> a function declaration. indentation [PSR-<span>2</span>] Code MUST use an indent <span>of</span><span>4</span> spaces, <span>and</span> MUST NOT use tabs <span>for</span> indenting. line_after_namespace [PSR-<span>2</span>] There MUST be one blank line <span>after</span><span>the</span> namespace declaration. <span>linefeed</span> [PSR-<span>2</span>] All PHP files must use <span>the</span> Unix LF (<span>linefeed</span>) line ending. lowercase_constants [PSR-<span>2</span>] The PHP constants <span>true</span>, <span>false</span>, <span>and</span> null MUST be <span>in</span> lower case. lowercase_keywords [PSR-<span>2</span>] PHP keywords MUST be <span>in</span> lower case. method_argument_space [PSR-<span>2</span>] In method arguments <span>and</span> method call, there MUST NOT be a <span>space</span><span>before</span> each comma <span>and</span> there MUST be one <span>space</span><span>after</span> each comma. multiple_use [PSR-<span>2</span>] There MUST be one use keyword per declaration. parenthesis [PSR-<span>2</span>] There MUST NOT be a <span>space</span><span>after</span><span>the</span> opening parenthesis. There MUST NOT be a <span>space</span><span>before</span><span>the</span> closing parenthesis. php_closing_tag [PSR-<span>2</span>] The closing ?> tag MUST be omitted <span>from</span> files containing only PHP. single_line_after_imports [PSR-<span>2</span>] Each namespace use MUST go <span><span>on</span></span><span>its</span> own line <span>and</span> there MUST be one blank line <span>after</span><span>the</span> use statements block. trailing_spaces [PSR-<span>2</span>] Remove trailing whitespace <span>at</span><span>the</span><span>end</span><span>of</span> non-blank lines. visibility [PSR-<span>2</span>] Visibility MUST be declared <span><span>on</span></span> all properties <span>and</span> methods; abstract <span>and</span> final MUST be declared <span>before</span><span>the</span> visibility; static MUST be declared <span>after</span><span>the</span> visibility. blankline_after_open_tag [symfony] Ensure there <span>is</span> no code <span><span>on</span></span><span>the</span> same line <span>as</span><span>the</span> PHP open tag <span>and</span><span>it</span><span>is</span> followed <span>by</span> a blankline. concat_without_spaces [symfony] Concatenation should be used <span>without</span> spaces. double_arrow_multiline_whitespaces [symfony] Operator => should <span>not</span> be arounded <span>by</span> multi-line whitespaces. duplicate_semicolon [symfony] Remove duplicated semicolons. empty_return [symfony] A <span>return</span> statement wishing <span>to</span><span>return</span> nothing should be simply <span>"return"</span>. extra_empty_lines [symfony] Removes extra empty lines. include [symfony] Include <span>and</span><span>file</span> path should be divided <span>with</span> a single <span>space</span>. File path should <span>not</span> be placed under brackets. join_function [symfony] Implode function should be used <span>instead of</span> join function. list_commas [symfony] Remove trailing commas <span>in</span><span>list</span> function calls. multiline_array_trailing_comma [symfony] PHP multi-line arrays should have a trailing comma. namespace_no_leading_whitespace [symfony] The namespace declaration line shouldn't <span>contain</span> leading whitespace. new_with_braces [symfony] All instances created <span>with</span> new keyword must be followed <span>by</span> braces. no_blank_lines_after_class_opening [symfony] There should be no empty lines <span>after</span><span>class</span> opening brace. no_empty_lines_after_phpdocs [symfony] There should <span>not</span> be blank lines <span>between</span> docblock <span>and</span><span>the</span> documented element. object_operator [symfony] There should <span>not</span> be <span>space</span><span>before</span><span>or</span><span>after</span> object T_OBJECT_OPERATOR. operators_spaces [symfony] Binary operators should be arounded <span>by</span><span>at</span> least one <span>space</span>. phpdoc_indent [symfony] Docblocks should have <span>the</span> same indentation <span>as</span><span>the</span> documented subject. phpdoc_no_access [symfony] @access annotations should be omitted <span>from</span> phpdocs. phpdoc_no_empty_return [symfony] @<span>return</span> void <span>and</span> @<span>return</span> null annotations should be omitted <span>from</span> phpdocs. phpdoc_no_package [symfony] @package <span>and</span> @subpackage annotations should be omitted <span>from</span> phpdocs. phpdoc_params [symfony] All items <span>of</span><span>the</span> @param, @throws, @<span>return</span>, @var, <span>and</span> @type phpdoc tags must be aligned vertically. phpdoc_scalar [symfony] Scalar types should always be written <span>in</span><span>the</span> same form. <span>"int"</span>, <span>not</span><span>"integer"</span>; <span>"bool"</span>, <span>not</span><span>"boolean"</span>; <span>"float"</span>, <span>not</span><span>"real"</span><span>or</span><span>"double"</span>. phpdoc_separation [symfony] Annotations <span>in</span> phpdocs should be grouped together so <span>that</span> annotations <span>of</span><span>the</span> same type immediately follow each other, <span>and</span> annotations <span>of</span> a different type are separated <span>by</span> a single blank line. phpdoc_short_description [symfony] Phpdocs short descriptions should <span>end</span><span>in</span> either a full stop, exclamation mark, <span>or</span> question mark. phpdoc_to_comment [symfony] Docblocks should only be used <span><span>on</span></span> structural elements. phpdoc_trim [symfony] Phpdocs should start <span>and</span><span>end</span><span>with</span> content, excluding <span>the</span> very <span>first</span><span>and</span><span>last</span> line <span>of</span><span>the</span> docblocks. phpdoc_type_to_var [symfony] @type should always be written <span>as</span> @var. phpdoc_var_without_name [symfony] @var <span>and</span> @type annotations should <span>not</span><span>contain</span><span>the</span> variable <span>name</span>. pre_increment [symfony] Pre incrementation/decrementation should be used <span>if</span> possible. remove_leading_slash_use [symfony] Remove leading slashes <span>in</span> use clauses. remove_lines_between_uses [symfony] Removes line breaks <span>between</span> use statements. <span> return</span> [symfony] An empty line feed should precede a <span>return</span> statement. self_accessor [symfony] Inside a classy element <span>"self"</span> should be preferred <span>to</span><span>the</span><span>class</span><span>name</span> itself. single_array_no_trailing_comma [symfony] PHP single-line arrays should <span>not</span> have trailing comma. single_blank_line_before_namespace [symfony] There should be exactly one blank line <span>before</span> a namespace declaration. single_quote [symfony] Convert double quotes <span>to</span> single quotes <span>for</span> simple strings. spaces_before_semicolon [symfony] Single-line whitespace <span>before</span> closing semicolon are prohibited. spaces_cast [symfony] A single <span>space</span> should be <span>between</span> cast <span>and</span> variable. standardize_not_equal [symfony] Replace all <> <span>with</span> !=. ternary_spaces [symfony] Standardize spaces <span>around</span> ternary operator. trim_array_spaces [symfony] Arrays should be formatted like function/method arguments, <span>without</span> leading <span>or</span> trailing single line <span>space</span>. unalign_double_arrow [symfony] Unalign double arrow symbols. unalign_equals [symfony] Unalign <span>equals</span> symbols. unary_operators_spaces [symfony] Unary operators should be placed adjacent <span>to</span> their operands. unused_use [symfony] Unused use statements must be removed. whitespacy_lines [symfony] Remove trailing whitespace <span>at</span><span>the</span><span>end</span><span>of</span> blank lines. align_double_arrow [contrib] Align double arrow symbols <span>in</span> consecutive lines. align_equals [contrib] Align <span>equals</span> symbols <span>in</span> consecutive lines. concat_with_spaces [contrib] Concatenation should be used <span>with</span><span>at</span> least one whitespace <span>around</span>. ereg_to_preg [contrib] Replace deprecated ereg regular expression functions <span>with</span> preg. Warning! This could change code behavior. header_comment [contrib] Add, replace <span>or</span> remove header comment. long_array_syntax [contrib] Arrays should use <span>the</span> long syntax. multiline_spaces_before_semicolon [contrib] Multi-line whitespace <span>before</span> closing semicolon are prohibited. newline_after_open_tag [contrib] Ensure there <span>is</span> no code <span><span>on</span></span><span>the</span> same line <span>as</span><span>the</span> PHP open tag. no_blank_lines_before_namespace [contrib] There should be no blank lines <span>before</span> a namespace declaration. ordered_use [contrib] Ordering use statements. php4_constructor [contrib] Convert PHP4-style constructors <span>to</span> __construct. Warning! This could change code behavior. phpdoc_order [contrib] Annotations <span>in</span> phpdocs should be ordered so <span>that</span> param annotations come <span>first</span>, <span>then</span> throws annotations, <span>then</span><span>return</span> annotations. phpdoc_var_to_type [contrib] @var should always be written <span>as</span> @type. short_array_syntax [contrib] PHP arrays should use <span>the</span> PHP <span>5.4</span> short-syntax. short_echo_tag [contrib] Replace short-echo <?= <span>with</span> long format <?php echo syntax. strict [contrib] Comparison should be strict. Warning! This could change code behavior. strict_param [contrib] Functions should be used <span>with</span> $strict param. Warning! This could change code behavior.</code>
The above introduces the vim php code specifications, including aspects of the content. I hope it will be helpful to friends who are interested in PHP tutorials.