=========== Config file =========== No config --------- It is possible to *not* have the config file. In that case, the default rule set (@PSR12) will be applied, yet the path will need to be provided via CLI. .. code-block:: console php php-cs-fixer.phar fix . It is also possible to provide command line options to customize rules, yet instead of using them, it's recommended to save the project configuration in a ``.php-cs-fixer.dist.php`` file in the root directory of your project. The file must return an instance of `PhpCsFixer\\ConfigInterface <./../src/ConfigInterface.php>`_ which lets you configure the rules, the files and directories that need to be analyzed. You may also create ``.php-cs-fixer.php`` file, which is the local configuration that will be used instead of the project configuration. It is a good practice to add that file into your ``.gitignore`` file. With the ``--config`` option you can specify the path to the config file. The simplest config ------------------- The simplest config declares paths under control and rules to apply/check: .. code-block:: php in(__DIR__) ; return (new PhpCsFixer\Config()) ->setRules([ '@PER-CS' => true, '@PHP82Migration' => true, ]) ->setFinder($finder) ; Default finder ignores ``__DIR__ . "/vendor"`` dir, "hidden" paths (ones starting with a dot) and VCS paths (e.g. ``.git``), and filter only for ``*.php`` files. Configuring paths ----------------- The example below will manipulate which paths to fix or not: .. code-block:: php in(__DIR__) ->exclude([ 'autogenerated_content', 'tests/fixtures', ]) ->notPath([ 'dump.php', 'src/exception_file.php', ]) ; return (new PhpCsFixer\Config()) ->setRules([ '@PhpCsFixer' => true, ]) ->setFinder($finder) ; Note that ``exclude`` will work only for directories, so if you need to exclude a file, use ``notPath``. Both ``exclude`` and ``notPath`` methods accept only relative paths to the ones defined with the ``in`` method, can be called multiple times and accept string or array of them. See `Symfony\\Finder `_ online documentation for other ``Finder`` methods. Configuring rules ----------------- The example below will add two rules to the default list of PSR12 set rules: .. code-block:: php in(__DIR__) ; return (new PhpCsFixer\Config()) ->setRules([ '@PSR12' => true, 'strict_param' => true, 'array_syntax' => ['syntax' => 'short'], ]) ->setFinder($finder) ; You may also use an exclude list for the rules instead of the above shown include approach. The following example shows how to use all ``PhpCsFixer`` rules but without the ``align_multiline_comment`` rule. .. code-block:: php in(__DIR__) ; return (new PhpCsFixer\Config()) ->setRules([ '@PhpCsFixer' => true, 'comment_type' => false, ]) ->setFinder($finder) ; Configuring whitespaces ----------------------- You may want to use non-linux whitespaces in your project. Then you need to configure them in your config file. .. code-block:: php in(__DIR__) ; return (new PhpCsFixer\Config()) ->setRules([ '@Symfony' => true, ]) ->setFinder($finder) ->setIndent("\t") ->setLineEnding("\r\n") ;