Back to Php Cs Fixer

Rule ``escape_implicit_backslashes``

doc/rules/string_notation/escape_implicit_backslashes.rst

3.95.13.9 KB
Original Source

==================================== Rule escape_implicit_backslashes

Escape implicit backslashes in strings and heredocs to ease the understanding of which are special chars interpreted by PHP and which not.

Description

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.

Warnings

This rule is DEPRECATED and will be removed in the next major version 4.0


You should use ``string_implicit_backslashes`` instead.

This rule is CONFIGURABLE
~~~~~~~~~~~~~~~~~~~~~~~~~

You can configure this rule using the following options: ``double_quoted``,
``heredoc_syntax``, ``single_quoted``.

Configuration
-------------

``double_quoted``
~~~~~~~~~~~~~~~~~

Whether to fix double-quoted strings.

Allowed types: ``bool``

Default value: ``true``

``heredoc_syntax``
~~~~~~~~~~~~~~~~~~

Whether to fix heredoc syntax.

Allowed types: ``bool``

Default value: ``true``

``single_quoted``
~~~~~~~~~~~~~~~~~

Whether to fix single-quoted strings.

Allowed types: ``bool``

Default value: ``false``

Examples
--------

Example #1
~~~~~~~~~~

*Default* configuration.

.. code-block:: diff

   --- 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;

Example #2
~~~~~~~~~~

With configuration: ``['single_quoted' => true]``.

.. code-block:: diff

   --- 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;

Example #3
~~~~~~~~~~

With configuration: ``['double_quoted' => false]``.

.. code-block:: diff

   --- 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;

Example #4
~~~~~~~~~~

With configuration: ``['heredoc_syntax' => false]``.

.. code-block:: diff

   --- 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;

References
----------

- Fixer class: `PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer <./../../../src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php>`_
- Test class: `PhpCsFixer\\Tests\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixerTest <./../../../tests/Fixer/StringNotation/EscapeImplicitBackslashesFixerTest.php>`_

The test class defines officially supported behaviour. Each test case is a part of our backward compatibility promise.