CMIContent Marketing InstituteContent directory

News · General · Archive

Escape Implicit Backslashes

News

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.

Configuration

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

Whether to fix single-quoted strings.

Allowed types: ``bool``

Default value: ``false``

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

Examples

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

*Default* configuration.

.. code-block:: diff

--- Original +++ New @@ -2,8 +2,8 @@

$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 0 but not my 9 +Interpret my 0 but not my \999 HEREDOC;

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

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

.. code-block:: diff

--- Original +++ New @@ -1,9 +1,9 @@ <?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 0 but not my 9 +Interpret my 0 but not my \999 HEREDOC;

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

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

.. code-block:: diff

--- Original +++ New @@ -5,5 +5,5 @@ $doubleQuoted = "Interpret my \n but not my \a";

$hereDoc = <<<HEREDOC -Interpret my 0 but not my 9 +Interpret my 0 but not my \999 HEREDOC;

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

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

.. code-block:: diff

--- Original +++ New @@ -2,8 +2,8 @@

$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 0 but not my 9 HEREDOC;

Rule sets

The rule is part of the following rule set

@PhpCsFixer Using the `@PhpCsFixer <./../../ruleSets/PhpCsFixer.rst>`_ rule set will enable the ``escape_implicit_backslashes`` rule with the default config.

More in Archive · More in General · More in News