Escape implicit backslashes in strings and heredocs to ease the understanding of which are special chars interpreted by PHP and which not.
In PHP double-quoted strings and heredocs some chars like n
, $
or u
have special meanings if preceded by a backslash (and some are special only if
followed by other special chars), while a backslash preceding other chars are
interpreted like a plain backslash. The precise list of those special chars is
hard to remember and to identify quickly: this fixer escapes backslashes that do
not start a special interpretation with the char after them.
It is possible to fix also single-quoted strings: in this case there is no
special chars apart from single-quote and backslash itself, so the fixer simply
ensure that all backslashes are escaped. Both single and double backslashes are
allowed in single-quoted strings, so the purpose in this context is mainly to
have a uniformed way to have them written all over the codebase.
You should use string_implicit_backslashes
instead.
Whether to fix double-quoted strings.
Allowed types: bool
Default value: true
Whether to fix heredoc syntax.
Allowed types: bool
Default value: true
Whether to fix single-quoted strings.
Allowed types: bool
Default value: false
Default configuration.
--- Original
+++ New
<?php
$singleQuoted = 'String with \" and My\Prefix\\';
-$doubleQuoted = "Interpret my \n but not my \a";
+$doubleQuoted = "Interpret my \n but not my \\a";
$hereDoc = <<<HEREDOC
-Interpret my \100 but not my \999
+Interpret my \100 but not my \\999
HEREDOC;
With configuration: ['single_quoted' => true]
.
--- Original
+++ New
<?php
-$singleQuoted = 'String with \" and My\Prefix\\';
+$singleQuoted = 'String with \\" and My\\Prefix\\';
-$doubleQuoted = "Interpret my \n but not my \a";
+$doubleQuoted = "Interpret my \n but not my \\a";
$hereDoc = <<<HEREDOC
-Interpret my \100 but not my \999
+Interpret my \100 but not my \\999
HEREDOC;
With configuration: ['double_quoted' => false]
.
--- Original
+++ New
<?php
$singleQuoted = 'String with \" and My\Prefix\\';
$doubleQuoted = "Interpret my \n but not my \a";
$hereDoc = <<<HEREDOC
-Interpret my \100 but not my \999
+Interpret my \100 but not my \\999
HEREDOC;
With configuration: ['heredoc_syntax' => false]
.
--- Original
+++ New
<?php
$singleQuoted = 'String with \" and My\Prefix\\';
-$doubleQuoted = "Interpret my \n but not my \a";
+$doubleQuoted = "Interpret my \n but not my \\a";
$hereDoc = <<<HEREDOC
Interpret my \100 but not my \999
HEREDOC;
- Fixer class: PhpCsFixer\Fixer\StringNotation\EscapeImplicitBackslashesFixer
- Test class: PhpCsFixer\Tests\Fixer\StringNotation\EscapeImplicitBackslashesFixerTest
The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.