<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHP_CodeSniffer" xsi:noNamespaceSchemaLocation="phpcs.xsd">
    <description>Coding standard</description>

    <file>src/</file>
    <file>tests/</file>


    <rule ref="PSR1">
        <exclude name="Generic.Files.LineLength"/>
    </rule>
    <rule ref="PSR2"></rule>
    <rule ref="PSR12"></rule>

    <rule ref="Generic">
        <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed"/>
        <exclude name="Generic.Files.LowercasedFilename.NotFound"/>
        <exclude name="Generic.PHP.ClosingPHPTag.NotFound"/>
        <exclude name="Generic.Files.EndFileNoNewline.Found"/>
        <exclude name="Generic.Files.EndFileNoNewline.Found"/>
        <exclude name="Generic.Arrays.DisallowShortArraySyntax.Found"/>
        <exclude name="Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine"/>
        <exclude name="Generic.Classes.OpeningBraceSameLine.BraceOnNewLine"/>
        <exclude name="Generic.PHP.LowerCaseConstant.Found"/>
        <exclude name="Generic.Formatting.SpaceAfterCast"/>
        <exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning"/>
        <exclude name="Generic.Commenting.DocComment.MissingShort"/>
        <exclude name="Generic.NamingConventions.AbstractClassNamePrefix.Missing"/>
        <exclude name="Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed"/>
        <exclude name="Generic.NamingConventions.InterfaceNameSuffix.Missing"/>
        <exclude name="Generic.Commenting.Todo.TaskFound"/>
        <exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUse"/>
        <exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassAfterLastUsed"/>
        <exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed"/>
        <exclude name="Generic.Formatting.SpaceBeforeCast.NoSpace"/>
        <exclude name="Generic.CodeAnalysis.UselessOverridingMethod.Found"/>
        <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.NewlineBeforeOpenBrace"/>
    </rule>

    <!-- Ban some functions -->
    <rule ref="Generic.PHP.ForbiddenFunctions">
        <properties>
            <property name="forbiddenFunctions" type="array">
                <element key="sizeof" value="count"/>
                <element key="delete" value="unset"/>
                <element key="print" value="echo"/>
                <element key="is_null" value="null"/>
                <element key="create_function" value="null"/>
            </property>
        </properties>
    </rule>
</ruleset>