diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index cf018d3c39d8..c00e70ba3291 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -25,11 +25,10 @@ body: description: Which PHP versions did you run your code? multiple: true options: - - '7.4' - - '8.0' - '8.1' - '8.2' - '8.3' + - '8.4' validations: required: true @@ -84,6 +83,20 @@ body: validations: required: true + - type: dropdown + id: environment + attributes: + label: Environment + description: Which CI_ENVIRONMENT setting are you using? + multiple: true + options: + - production + - development + - testing + - other (custom) + validations: + required: true + - type: input id: database attributes: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9bec3b2d3431..d399e41dca3e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,7 +2,7 @@ blank_issues_enabled: false contact_links: - name: CodeIgniter Forum url: https://forum.codeigniter.com/forum-30.html - about: Please ask your support questions in the forums. Thanks! + about: Please ask your support questions and/or feature requests in the forums. Thanks! - name: CodeIgniter Slack channel url: https://codeigniterchat.slack.com diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3bd2d0a6c44f..000000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Feature request -about: How to submit a feature request -title: '' -labels: '' -assignees: '' - ---- - -Please submit feature requests to our [forum](https://forum.codeigniter.com/forum-29.html). -We use github issues to track bugs and planned work. diff --git a/.github/ISSUE_TEMPLATE/planned-work.md b/.github/ISSUE_TEMPLATE/planned-work.md index 4faa45ed874e..3da11a7dbc58 100644 --- a/.github/ISSUE_TEMPLATE/planned-work.md +++ b/.github/ISSUE_TEMPLATE/planned-work.md @@ -1,10 +1,10 @@ --- name: Planned work -about: Approved work planning +about: Maintainers' space. DO NOT use this for your bug reports! title: 'Dev: ' labels: dev assignees: '' --- -Repo maintainers will create "issues" for planned work, so it can be tracked. +Maintainers will create "issues" for planned work, so it can be tracked. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f16a793ece5b..e39d50b0b187 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -5,8 +5,9 @@ Each pull request should address a single issue and have a meaningful title. - PR title must include the type (feat, fix, chore, docs, perf, refactor, style, test) of the commit per Conventional Commits specification. See https://www.conventionalcommits.org/en/v1.0.0/ for the discussion. - Pull requests must be in English. - If a pull request fixes an issue, reference the issue with a suitable keyword (e.g., Fixes ). +- Your branch name and the target name should be different. - All bug fixes should be sent to the __"develop"__ branch, this is where the next bug fix version will be developed. -- PRs with any enhancement should be sent to the next minor version branch, e.g. __"4.5"__ +- PRs with any enhancement should be sent to the next minor version branch, e.g. __"4.7"__ --> **Description** @@ -14,7 +15,7 @@ Explain what you have changed, and why. **Checklist:** - [ ] Securely signed commits -- [ ] Component(s) with PHPDoc blocks, only if necessary or adds value +- [ ] Component(s) with PHPDoc blocks, only if necessary or adds value (without duplication) - [ ] Unit testing, with >80% coverage - [ ] User guide updated - [ ] Conforms to style guide diff --git a/.github/mergeable.yml b/.github/mergeable.yml new file mode 100644 index 000000000000..2e58526188aa --- /dev/null +++ b/.github/mergeable.yml @@ -0,0 +1,69 @@ +# https://mergeable.readthedocs.io/en/latest/configuration.html + +version: 2 +mergeable: + - when: issues.opened, issues.reopened + validate: + - do: or + validate: + - do: and + validate: + - do: description + must_include: + regex: '### PHP Version' + - do: description + must_include: + regex: '### CodeIgniter4 Version' + - do: author + must_include: + regex: ^kenjis|lonnieezell|MGatner|michalsn|paulbalandan|samsonasik|ddevsr$ + fail: + - do: comment + payload: + body: | + Hi there, @@author! :wave: + + It looks like you opened an issue without following the bug report template: + + * Bug report ([open an issue](https://github.com/codeigniter4/CodeIgniter4/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=Bug%3A+)) + * For feature request or support question, please use the [forums](https://forum.codeigniter.com/forum-30.html). + + The current issue will be closed. This is a precaution to save maintainers' time, I hope you'll understand. + + Sincerely, the mergeable bot 🤖 + - do: close + + - when: pull_request.opened, pull_request.ready_for_review + filter: + - do: payload + pull_request: + author_association: + must_include: + regex: ^NONE|FIRST_TIME_CONTRIBUTOR|FIRST_TIMER$ + validate: [] + pass: + - do: comment + payload: + body: | + Hi there, @@author! :wave: + + Thank you for sending this PR! + + We expect the following in all Pull Requests (PRs). + - PRs must be sent to the [appropriate branch](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#branching) + - All git commits must be [GPG-signed](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#signing) + - Must follow our [style guide](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#php-style) + - Be [commented](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#comments) in the PHP source file + - Be documented in the [user guide](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#user-guide) + - Be [unit tested](https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md#unit-testing) + - Pass all checks in GitHub Actions + + > [!IMPORTANT] + > We expect all code changes or bug-fixes to be accompanied by one or more tests added to our test suite to prove the code works. + + If pull requests do not comply with the above, they will likely be closed. Since we are a team of volunteers, we don't have any more time to work + on the framework than you do. Please make it as painless for your contributions to be included as possible. + + See https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md + + Sincerely, the mergeable bot 🤖 diff --git a/.github/prlint.json b/.github/prlint.json index a3744c5d5018..bb352e554b71 100644 --- a/.github/prlint.json +++ b/.github/prlint.json @@ -1,7 +1,7 @@ { "title": [ { - "pattern": "^(\\[\\d+\\.\\d+\\]\\s{1})?(feat|fix|chore|docs|perf|refactor|style|test|config|revert)(\\([\\-.@:`a-zA-Z0-9]+\\))?!?:\\s{1}\\S.+\\S|Prep for \\d\\.\\d\\.\\d release|\\d\\.\\d\\.\\d Ready code$", + "pattern": "^(\\[\\d+\\.\\d+\\]\\s{1})?(feat|fix|chore|docs|perf|refactor|style|test|config|revert)(\\([\\-.@:`a-zA-Z0-9]+\\))?!?:\\s{1}\\S.+\\S|Prep for \\d\\.\\d\\.\\d release|\\d\\.\\d\\.\\d (Ready|Merge) code$", "message": "PR title must include the type (feat, fix, chore, docs, perf, refactor, style, test, config, revert) of the commit per Conventional Commits specification. See https://www.conventionalcommits.org/en/v1.0.0/ for the discussion." } ] diff --git a/.github/workflows/deploy-apidocs.yml b/.github/workflows/deploy-apidocs.yml index fb9665327578..a660e33eb03c 100644 --- a/.github/workflows/deploy-apidocs.yml +++ b/.github/workflows/deploy-apidocs.yml @@ -29,12 +29,12 @@ jobs: git config --global user.name "${GITHUB_ACTOR}" - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: path: source - name: Checkout target - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: codeigniter4/api token: ${{ secrets.ACCESS_TOKEN }} @@ -49,7 +49,7 @@ jobs: - name: Download latest phpDocumentor working-directory: source - run: phive --no-progress install --trust-gpg-keys 8AC0BAA79732DD42 phpDocumentor + run: phive --no-progress install --trust-gpg-keys 6DA3ACC4991FFAE5 phpDocumentor - name: Prepare API repo working-directory: api diff --git a/.github/workflows/deploy-distributables.yml b/.github/workflows/deploy-distributables.yml index 7c0b4e4dd1ce..e1a63e792ffa 100644 --- a/.github/workflows/deploy-distributables.yml +++ b/.github/workflows/deploy-distributables.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 # fetch all tags @@ -48,12 +48,12 @@ jobs: git config --global user.name "${GITHUB_ACTOR}" - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: path: source - name: Checkout target - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: codeigniter4/framework token: ${{ secrets.ACCESS_TOKEN }} @@ -66,7 +66,7 @@ jobs: run: ./source/.github/scripts/deploy-framework ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/framework ${GITHUB_REF##*/} - name: Release - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{secrets.ACCESS_TOKEN}} script: | @@ -98,12 +98,12 @@ jobs: git config --global user.name "${GITHUB_ACTOR}" - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: path: source - name: Checkout target - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: codeigniter4/appstarter token: ${{ secrets.ACCESS_TOKEN }} @@ -116,7 +116,7 @@ jobs: run: ./source/.github/scripts/deploy-appstarter ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/appstarter ${GITHUB_REF##*/} - name: Release - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{secrets.ACCESS_TOKEN}} script: | @@ -148,19 +148,19 @@ jobs: git config --global user.name "${GITHUB_ACTOR}" - name: Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: path: source - name: Checkout target - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: codeigniter4/userguide token: ${{ secrets.ACCESS_TOKEN }} path: userguide - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -176,7 +176,7 @@ jobs: run: ./source/.github/scripts/deploy-userguide ${GITHUB_WORKSPACE}/source ${GITHUB_WORKSPACE}/userguide ${GITHUB_REF##*/} - name: Release - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{secrets.ACCESS_TOKEN}} script: | diff --git a/.github/workflows/deploy-userguide-latest.yml b/.github/workflows/deploy-userguide-latest.yml index 9188672f907a..8fee24da6299 100644 --- a/.github/workflows/deploy-userguide-latest.yml +++ b/.github/workflows/deploy-userguide-latest.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -34,7 +34,7 @@ jobs: coverage: none - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -57,7 +57,7 @@ jobs: # Create an artifact of the html output - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: HTML Documentation path: user_guide_src/build/html/ @@ -75,7 +75,7 @@ jobs: git commit -m "Update User Guide" -a || true - name: Push changes - uses: ad-m/github-push-action@v0.6.0 + uses: ad-m/github-push-action@v1.0.0 with: branch: gh-pages directory: gh-pages diff --git a/.github/workflows/label-add-conflict-all-pr.yml b/.github/workflows/label-add-conflict-all-pr.yml index e83e4daf0b99..16467abd161c 100644 --- a/.github/workflows/label-add-conflict-all-pr.yml +++ b/.github/workflows/label-add-conflict-all-pr.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-22.04 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Get PR List id: PR-list diff --git a/.github/workflows/label-signing.yml b/.github/workflows/label-signing.yml index 389ad8844411..5f6b99290e89 100644 --- a/.github/workflows/label-signing.yml +++ b/.github/workflows/label-signing.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Check signed commits in PR uses: 1Password/check-signed-commits-action@v1 diff --git a/.github/workflows/reusable-coveralls.yml b/.github/workflows/reusable-coveralls.yml index af1fd2f5b6c1..e8af4347f9f6 100644 --- a/.github/workflows/reusable-coveralls.yml +++ b/.github/workflows/reusable-coveralls.yml @@ -13,8 +13,14 @@ jobs: runs-on: ubuntu-22.04 steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -24,7 +30,7 @@ jobs: coverage: xdebug - name: Download coverage files - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: path: build/cov @@ -37,7 +43,7 @@ jobs: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ github.job }}-php-${{ inputs.php-version }}-${{ hashFiles('**/composer.*') }} @@ -46,7 +52,7 @@ jobs: ${{ github.job }}- - name: Cache PHPUnit's static analysis cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build/.phpunit.cache/code-coverage key: phpunit-code-coverage-${{ hashFiles('**/phpunit.*') }} diff --git a/.github/workflows/reusable-phpunit-test.yml b/.github/workflows/reusable-phpunit-test.yml index 9758d6eb5410..86a0d07bd228 100644 --- a/.github/workflows/reusable-phpunit-test.yml +++ b/.github/workflows/reusable-phpunit-test.yml @@ -43,6 +43,10 @@ on: description: Additional PHP extensions that are needed to be enabled type: string required: false + extra-ini-options: + description: Additional PHP configuration directives that should be appended to the php.ini + type: string + required: false extra-composer-options: description: Additional Composer options that should be appended to the `composer update` call type: string @@ -148,8 +152,14 @@ jobs: sudo apt-get install -y gsfonts libmagickwand-dev imagemagick sudo apt-get install --fix-broken + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -157,6 +167,7 @@ jobs: php-version: ${{ inputs.php-version }} tools: composer extensions: gd, ${{ inputs.extra-extensions }} + ini-values: ${{ inputs.extra-ini-options }} coverage: ${{ env.COVERAGE_DRIVER }} env: COVERAGE_DRIVER: ${{ inputs.enable-coverage && 'xdebug' || 'none' }} @@ -167,7 +178,7 @@ jobs: echo "ARTIFACT_NAME=${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}-db-${{ inputs.db-platform || 'none' }}" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}-db-${{ inputs.db-platform || 'none' }}-${{ hashFiles('**/composer.*') }} @@ -178,7 +189,7 @@ jobs: - name: Cache PHPUnit's static analysis cache if: ${{ inputs.enable-artifact-upload }} - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build/.phpunit.cache/code-coverage key: phpunit-code-coverage-${{ hashFiles('**/phpunit.*') }} @@ -206,7 +217,7 @@ jobs: - name: Upload coverage results as artifact if: ${{ inputs.enable-artifact-upload }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ env.ARTIFACT_NAME }} path: build/cov/coverage-${{ env.ARTIFACT_NAME }}.cov diff --git a/.github/workflows/reusable-serviceless-phpunit-test.yml b/.github/workflows/reusable-serviceless-phpunit-test.yml index 8a9f00c5e2e6..bbca4fe2acc8 100644 --- a/.github/workflows/reusable-serviceless-phpunit-test.yml +++ b/.github/workflows/reusable-serviceless-phpunit-test.yml @@ -37,6 +37,10 @@ on: description: Additional PHP extensions that are needed to be enabled type: string required: false + extra-ini-options: + description: Additional PHP configuration directives that should be appended to the php.ini + type: string + required: false extra-composer-options: description: Additional Composer options that should be appended to the `composer update` call type: string @@ -60,8 +64,14 @@ jobs: sudo apt-get install -y imagemagick sudo apt-get install --fix-broken + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -69,6 +79,7 @@ jobs: php-version: ${{ inputs.php-version }} tools: composer extensions: gd, ${{ inputs.extra-extensions }} + ini-values: ${{ inputs.extra-ini-options }} coverage: ${{ env.COVERAGE_DRIVER }} env: COVERAGE_DRIVER: ${{ inputs.enable-coverage && 'xdebug' || 'none' }} @@ -79,7 +90,7 @@ jobs: echo "ARTIFACT_NAME=${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}" >> $GITHUB_ENV - name: Cache Composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ inputs.job-id || github.job }}-php-${{ inputs.php-version }}-${{ hashFiles('**/composer.*') }} @@ -89,7 +100,7 @@ jobs: - name: Cache PHPUnit's static analysis cache if: ${{ inputs.enable-artifact-upload }} - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build/.phpunit.cache/code-coverage key: phpunit-code-coverage-${{ hashFiles('**/phpunit.*') }} @@ -116,7 +127,7 @@ jobs: - name: Upload coverage results as artifact if: ${{ inputs.enable-artifact-upload }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ env.ARTIFACT_NAME }} path: build/cov/coverage-${{ env.ARTIFACT_NAME }}.cov diff --git a/.github/workflows/test-autoreview.yml b/.github/workflows/test-autoreview.yml index 69545ca6af01..55300ae5eff5 100644 --- a/.github/workflows/test-autoreview.yml +++ b/.github/workflows/test-autoreview.yml @@ -35,8 +35,14 @@ jobs: name: Check normalized composer.json runs-on: ubuntu-latest steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/test-coding-standards.yml b/.github/workflows/test-coding-standards.yml index f30475a76dba..c122f1e25b62 100644 --- a/.github/workflows/test-coding-standards.yml +++ b/.github/workflows/test-coding-standards.yml @@ -29,11 +29,17 @@ jobs: matrix: php-version: - '8.1' - - '8.3' + - '8.4' steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -46,7 +52,7 @@ jobs: run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} diff --git a/.github/workflows/test-deptrac.yml b/.github/workflows/test-deptrac.yml index fecb289b1b63..a301f3552d55 100644 --- a/.github/workflows/test-deptrac.yml +++ b/.github/workflows/test-deptrac.yml @@ -36,8 +36,14 @@ jobs: name: Architectural Inspection runs-on: ubuntu-22.04 steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -53,7 +59,7 @@ jobs: run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} @@ -63,7 +69,7 @@ jobs: run: mkdir -p build/ - name: Cache Deptrac results - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build key: ${{ runner.os }}-deptrac-${{ github.sha }} @@ -74,7 +80,7 @@ jobs: - name: Run architectural inspection run: | - composer require --dev qossmic/deptrac-shim + composer require --dev deptrac/deptrac vendor/bin/deptrac analyze --cache-file=build/deptrac.cache env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-file-permissions.yml b/.github/workflows/test-file-permissions.yml index e6ad5949d8b4..c6fed8f71d1b 100644 --- a/.github/workflows/test-file-permissions.yml +++ b/.github/workflows/test-file-permissions.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Detect unnecessary execution permissions run: php utils/check_permission_x.php diff --git a/.github/workflows/test-phpstan.yml b/.github/workflows/test-phpstan.yml index aca331f30481..5634b634d482 100644 --- a/.github/workflows/test-phpstan.yml +++ b/.github/workflows/test-phpstan.yml @@ -45,8 +45,14 @@ jobs: strategy: fail-fast: false steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -65,7 +71,7 @@ jobs: run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} @@ -75,7 +81,7 @@ jobs: run: mkdir -p build/phpstan - name: Cache PHPStan result cache directory - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build/phpstan key: ${{ runner.os }}-phpstan-${{ github.sha }} diff --git a/.github/workflows/test-phpunit.yml b/.github/workflows/test-phpunit.yml index ba566ce5c9d1..62a8ab0e4338 100644 --- a/.github/workflows/test-phpunit.yml +++ b/.github/workflows/test-phpunit.yml @@ -59,9 +59,7 @@ jobs: - '8.1' - '8.2' - '8.3' - include: - - php-version: '8.3' - composer-option: '--ignore-platform-req=php' + - '8.4' uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo with: @@ -88,6 +86,7 @@ jobs: - '8.1' - '8.2' - '8.3' + - '8.4' db-platform: - MySQLi - OCI8 @@ -100,8 +99,6 @@ jobs: - php-version: '8.1' db-platform: MySQLi mysql-version: '5.7' - - php-version: '8.3' - composer-option: '--ignore-platform-req=php' uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo with: @@ -129,9 +126,7 @@ jobs: - '8.1' - '8.2' - '8.3' - include: - - php-version: '8.3' - composer-option: '--ignore-platform-req=php' + - '8.4' uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo with: @@ -157,9 +152,7 @@ jobs: - '8.1' - '8.2' - '8.3' - include: - - php-version: '8.3' - composer-option: '--ignore-platform-req=php' + - '8.4' uses: ./.github/workflows/reusable-phpunit-test.yml # @TODO Extract to codeigniter4/.github repo with: diff --git a/.github/workflows/test-psalm.yml b/.github/workflows/test-psalm.yml index b1f5891a46d9..a2ad9668bd91 100644 --- a/.github/workflows/test-psalm.yml +++ b/.github/workflows/test-psalm.yml @@ -27,8 +27,14 @@ jobs: if: (! contains(github.event.head_commit.message, '[ci skip]')) steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -43,7 +49,7 @@ jobs: run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache composer dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}-${{ hashFiles('**/composer.lock') }} @@ -53,19 +59,14 @@ jobs: run: mkdir -p build/psalm - name: Cache Psalm results - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: build/psalm key: ${{ runner.os }}-psalm-${{ github.sha }} restore-keys: ${{ runner.os }}-psalm- - name: Install dependencies - run: | - if [ -f composer.lock ]; then - composer install --no-progress - else - composer update --no-progress - fi + run: composer update --ansi --no-interaction - name: Run Psalm analysis run: utils/vendor/bin/psalm diff --git a/.github/workflows/test-rector.yml b/.github/workflows/test-rector.yml index 286ca76cab42..72bbf8198875 100644 --- a/.github/workflows/test-rector.yml +++ b/.github/workflows/test-rector.yml @@ -45,10 +45,16 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['8.1', '8.3'] + php-versions: ['8.1', '8.4'] steps: + - name: Checkout base branch for PR + if: github.event_name == 'pull_request' + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -66,7 +72,7 @@ jobs: run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV - name: Cache dependencies - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.COMPOSER_CACHE_FILES_DIR }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} @@ -76,7 +82,7 @@ jobs: run: composer update --ansi --no-interaction - name: Rector Cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: /tmp/rector key: ${{ runner.os }}-rector-${{ github.run_id }} diff --git a/.github/workflows/test-scss.yml b/.github/workflows/test-scss.yml index e93455d3a050..71ca99253872 100644 --- a/.github/workflows/test-scss.yml +++ b/.github/workflows/test-scss.yml @@ -33,10 +33,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Node - uses: actions/setup-node@v4.0.0 + uses: actions/setup-node@v6.0.0 with: # node version based on dart-sass test workflow node-version: 16 diff --git a/.github/workflows/test-userguide.yml b/.github/workflows/test-userguide.yml index f1e0d0bd60e6..0405af7cd6d7 100644 --- a/.github/workflows/test-userguide.yml +++ b/.github/workflows/test-userguide.yml @@ -24,10 +24,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index a50b126db075..ad6ffacb8f0c 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -13,8 +13,6 @@ use CodeIgniter\CodingStandard\CodeIgniter4; use Nexus\CsConfig\Factory; -use Nexus\CsConfig\Fixer\Comment\NoCodeSeparatorCommentFixer; -use Nexus\CsConfig\FixerGenerator; use PhpCsFixer\Finder; $finder = Finder::create() @@ -28,7 +26,6 @@ 'ThirdParty', 'Validation/Views', ]) - ->notName('#Foobar.php$#') ->append([ __FILE__, __DIR__ . '/.php-cs-fixer.no-header.php', @@ -42,16 +39,12 @@ $overrides = []; $options = [ - 'cacheFile' => 'build/.php-cs-fixer.cache', - 'finder' => $finder, - 'customFixers' => FixerGenerator::create('utils/vendor/nexusphp/cs-config/src/Fixer', 'Nexus\\CsConfig\\Fixer'), - 'customRules' => [ - NoCodeSeparatorCommentFixer::name() => true, - ], + 'cacheFile' => 'build/.php-cs-fixer.cache', + 'finder' => $finder, ]; return Factory::create(new CodeIgniter4(), $overrides, $options)->forLibrary( 'CodeIgniter 4 framework', 'CodeIgniter Foundation', - 'admin@codeigniter.com' + 'admin@codeigniter.com', ); diff --git a/.php-cs-fixer.tests.php b/.php-cs-fixer.tests.php index 28a7124909e5..09ea5a62c55a 100644 --- a/.php-cs-fixer.tests.php +++ b/.php-cs-fixer.tests.php @@ -11,10 +11,11 @@ * the LICENSE file that was distributed with this source code. */ -use PhpCsFixer\ConfigInterface; +use PhpCsFixer\Config; use PhpCsFixer\Finder; +use Utils\PhpCsFixer\CodeIgniterRuleCustomisationPolicy; -/** @var ConfigInterface $config */ +/** @var Config $config */ $config = require __DIR__ . '/.php-cs-fixer.dist.php'; $finder = Finder::create() @@ -26,14 +27,15 @@ '_support/View/Cells/multiplier.php', '_support/View/Cells/colors.php', '_support/View/Cells/addition.php', - ]) - ->notName('#Foobar.php$#'); + ]); $overrides = [ - 'void_return' => true, + 'phpdoc_to_return_type' => true, + 'void_return' => true, ]; return $config + ->setRuleCustomisationPolicy(new CodeIgniterRuleCustomisationPolicy()) ->setFinder($finder) ->setCacheFile('build/.php-cs-fixer.tests.cache') ->setRules(array_merge($config->getRules(), $overrides)); diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d9867ef29c4..f1e51255081e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,296 @@ # Changelog +## [v4.6.4](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.4) (2025-12-12) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.6.3...v4.6.4) + +### Fixed Bugs + +* fix: prevent non-shared DB instances from polluting shared cache by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9679 +* fix: `Connection::getFieldData()` default value convention for `SQLSRV` and `OCI8` by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9680 +* fix: `Forge::modifyColumn()` for Postgre handler by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9676 +* fix: setting `created_at` field in `Model::replace()` method by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9693 +* fix: Casting in insertBatch and updateBatch methods. by @patel-vansh in https://github.com/codeigniter4/CodeIgniter4/pull/9698 +* fix: `compileOrderBy()` method by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9697 +* fix: SQLite3 password handling for empty string by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9729 +* fix: TypeError in `valid_base64` rule when checking invalid base64 strings by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9733 +* fix: debug toolbar logs collector behavior on `isEmpty()` by @mjomble in https://github.com/codeigniter4/CodeIgniter4/pull/9724 +* fix: crash in `toggleViewsHints` - `debugDiv.appendChild` (`toolbar.js`) by @mjomble in https://github.com/codeigniter4/CodeIgniter4/pull/9735 +* fix: cannot read properties of null in `toggleViewsHints` (`toolbar.js`) by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9736 +* fix: type error in controlled cell by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9784 +* fix: handle resources and closures in JSON exception responses by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9788 +* fix: quote reserved keyword `timestamp` used as a field name for session table by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9805 +* fix: Add an IDs for toolbar form fields by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9823 +* fix: disable echo in the preload file by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9825 +* fix(cache): prevent Redis error when `deleteMatching()` finds no keys by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9829 + +### Refactoring + +* refactor: change `$request` to `CLIRequest|IncomingRequest` in `ResponseTrait` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9658 +* refactor: fix phpdoc and improve code in `Language` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9656 +* refactor: remove redundant property declarations in `BaseController` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9659 +* refactor: update `CheckPhpIni` code by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9672 +* refactor: Improve types for phpstan by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9685 +* refactor: fix phpstan issues on magic properties by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9728 +* refactor: use `superglobals` service in the `UserAgent` class by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9783 + +## [v4.6.3](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.3) (2025-08-02) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.6.2...v4.6.3) + +### Fixed Bugs + +* fix: CID check in Email class by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9645 +* fix: SMTP connection resource validation in `Email` class destructor by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9648 + +### Refactoring + +* refactor: update preload script to exclude `util_bootstrap` by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9649 +* refactor: phpdoc for `Config\Filters::$globals` by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9652 + +## [v4.6.2](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.2) (2025-07-26) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.6.1...v4.6.2) + +### Security + +* **ImageMagickHandler**: *Command Injection Vulnerability in ImageMagick Handler* + Fixes a vulnerability relating to uses of `ImageMagickHandler`'s `resize()` or `text()` methods + where an attacker can upload malicious filenames containing shell metacharacters that get executed when + the image is processed or when text is added to the image. + + See the [security advisory](https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-9952-gv64-x94c) + for details. Credits to @vicevirus for reporting the issue. + +### Fixed Bugs + +* chore: add missing EscaperInterface to the AutoloadConfig by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9561 +* fix: remove service dependency from sanitize_filename() helper function by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9560 +* fix: use native PHP truthiness for condition evaluation in when()/whenNot() by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9576 +* fix: add error handling for corrupted cache files in `FileHandler` by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9586 +* fix: correct `getHostname()` fallback logic in `Email` class by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9587 +* fix: encapsulation violation in `BasePreparedQuery` class by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9603 +* fix: URI authority generation for schemes without default ports by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9605 +* fix: correct path parsing in `SiteURIFactory::parseRequestURI()` by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9613 +* fix: support for multibyte folder names when the app is served from a subfolder by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9615 +* fix: use correct 24-hour time format in development error page. by @ping-yee in https://github.com/codeigniter4/CodeIgniter4/pull/9628 +* fix: improve CURLRequest intermediate HTTP response handling by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9627 +* fix: ensure `make:test` works on Windows by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9635 +* fix: ensure `make:test` generates test files ending in `Test` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9636 +* fix: `make:test` requires 3 inputs after entering an empty class name by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9637 +* fix: add filename parameters to inline Content-Disposition headers by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9638 + +### Refactoring + +* refactor: add `system/util_bootstrap.php` to curb overreliance to `system/Test/bootstrap.php` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9562 +* refactor: update places to use `system/util_bootstrap.php` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9568 +* refactor: more accurate array PHPDocs of Cookie by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9569 +* refactor: use native phpdocs wherever possible by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9571 +* refactor: fix `notIdentical.alwaysTrue` error by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9579 +* refactor: fix phpstan errors in `Events` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9580 +* refactor: fix non-booleans in if conditions by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9578 +* refactor: fix and micro-optimize code in `Format` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9583 +* refactor: fix various phpstan errors in Log component by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9581 +* refactor: partial fix errors on Email by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9582 +* refactor: fix phpstan errors in `ResponseTrait` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9591 +* refactor: precise PHPDocs for Autoloader by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9593 +* refactor: fix phpstan errors in mock classes by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9594 +* refactor: fix various phpstan errors in Cache by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9610 +* fix: apply rector rule TernaryImplodeToImplodeRector by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9614 +* refactor: `Console::showHeader()` call `date()` only once by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9616 + +## [v4.6.1](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.1) (2025-05-02) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.6.0...v4.6.1) + +### Fixed Bugs + +* fix(CURLRequest): multiple header sections after redirects by @ducng99 in https://github.com/codeigniter4/CodeIgniter4/pull/9426 +* fix: set headers for CORS by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9437 +* fix: upsert with composite unique index by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9454 +* fix: `getVersion()` for OCI8 and SQLSRV drivers by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9471 +* fix: Toolbar when `maxHistory` is set to `0` by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9506 +* fix: `Session::markAsTempdata()` adding wrong TTL by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9536 +* fix: added "application/octet-stream" to the "stl" mime type in the M… by @Franky5831 in https://github.com/codeigniter4/CodeIgniter4/pull/9543 + +### Refactoring + +* refactor: get upper first protocol only one call in Email by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9449 +* refactor: PHPDocs in `env()` by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9468 +* refactor: remove lowercase event name for logging by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9483 +* refactor: OCI8 `limit()` method by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9472 +* refactor: deprecate redundant `FileHandler` cache methods by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9511 +* refactor: fix `variable.undefined` (and other) errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9513 +* refactor: fix `return.unusedType` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9514 +* refactor: add `CITestStreamFilter` to phpstan-analysed list and fix errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9515 +* refactor: fix `property.protected` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9517 +* refactor: fix `function.alreadyNarrowedType` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9518 +* refactor: fix `empty.property` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9519 +* refactor: import FQCNs by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9520 +* refactor: fix `isset.property` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9522 +* refactor: fix `missingType.return` errors by @warcooft in https://github.com/codeigniter4/CodeIgniter4/pull/9523 +* refactor: fix `nullCoalesce.variable` errors by @warcooft in https://github.com/codeigniter4/CodeIgniter4/pull/9524 +* refactor: fix phpstan errors in `URI` and `SiteURI` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9525 +* refactor: fix `@readonly` property errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9529 +* refactor: fix `missingType.return` errors in system files by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9530 +* refactor: fix `codeigniter.modelArgumentType` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9533 +* refactor: fix `Session` and `SessionInterface` code by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9535 + +## [v4.6.0](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.0) (2025-01-19) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.8...v4.6.0) + +### Breaking Changes + +* refactor: remove deprecated failValidationError() in API\ResponseTrait by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8793 +* refactor: remove depreacted ResponseInterface::getReason() by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8841 +* refactor: remove deprecated Logger::cleanFilenames() and TestLogger::cleanup() by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8843 +* fix: Exception rework by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8728 +* fix: DefinedRouteCollector to use RouteCollectionInterface by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8911 +* fix: View::renderSection() return type by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8965 +* feat: [Filters] enables a filter to run more than once with different arguments by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8977 +* fix: add check for duplicate Registrar Auto-Discovery runs by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9073 +* fix: Time loses microseconds by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9081 +* feat: fix spark db:table causes errors with table name including special chars by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8748 +* [4.6] fix: Time::createFromTimestamp() change for PHP 8.4 by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9105 +* fix: Time::setTimestamp()'s different behavior than DateTime by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9106 +* [4.6] fix: inconsistency in detailed error reporting by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9144 +* [4.6] feat: force PHP default 32 chars length at 4 bits to Session ID by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9139 +* fix: prioritize headers set by the `Response` class by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9235 + +### Fixed Bugs + +* [4.6] fix: add validation message for min_dims by @christianberkman in https://github.com/codeigniter4/CodeIgniter4/pull/8988 +* fix: [Filters] normalize `$filters` arguments by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8994 +### Enhancements +* feat: [FileCollection] add function to reatain multiple patterns by @christianberkman in https://github.com/codeigniter4/CodeIgniter4/pull/8960 +* feat: [Validation] add `min_dims` rule in FileRules by @christianberkman in https://github.com/codeigniter4/CodeIgniter4/pull/8966 +* feat: add `foundRows` option for MySQLi config by @ducng99 in https://github.com/codeigniter4/CodeIgniter4/pull/8979 +* feat: `spark filter:check` shows filter classnames by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8985 +* feat: add BaseConnection::resetTransStatus() by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8767 +* feat: add Services::resetServicesCache() to reset services cache by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9012 +* feat: add "400 Bad Request" page for end users by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9044 +* feat: add directives to `phpini:check` command by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9117 +* feat: multiple hostname routing by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9150 +* [4.6] feat: workaround for implicit nullable deprecations in PHP 8.4 by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9140 +* feat: support CURL HTTP3 by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9145 +* feat: design info environment top in `error_exception` by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9241 +* feat: [Validation] add support for `$dbGroup` as parameter in `is_unique` and `is_not_unique` by @maniaba in https://github.com/codeigniter4/CodeIgniter4/pull/9216 +* feat: added the `namespace` option to the `publish` command by @dimtrovich in https://github.com/codeigniter4/CodeIgniter4/pull/9278 +* chore: update `Kint` to v6.0 by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9289 +* feat: CURL option `force_ip_resolve` by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9194 +* feat: add SQLite3 config synchronous by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9202 +* feat: Differentiate between kilobyte/kibibyte and megabyte/mebibyte by @ThomasMeschke in https://github.com/codeigniter4/CodeIgniter4/pull/9277 +* feat: Strict locale negotiation by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9360 +* fix: Add support for multibyte strings by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9372 +* feat: add page start end total to `PagerRenderer` by @murilohpucci in https://github.com/codeigniter4/CodeIgniter4/pull/9371 +* feat: New command `lang:sync` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9023 +* feat: additional `opcache` setting in check php.ini by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9032 + +### Refactoring + +* [4.6] refactor: Validation rules and tests by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/8975 +* [4.6] refactor: add `: void` by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9013 +* refactor: remove dependency on BaseConnection in TableName by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9104 +* refactor: add return type to closuer in FilterCheck by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9190 +* refactor: Remove deprecated `RedirectException` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9399 +* refactor: Remove deprecated `EVENT_PRIORITY_*` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9401 +* refactor: Remove deprecated `View::$currentSection` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9403 +* refactor: Remove deprecated `Cache::$storePath` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9404 +* refactor: Remove deprecated `Config\Format::getFormatter()` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9405 +* refactor: Remove deprecation related to cookies by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9406 + +## [v4.5.8](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.8) (2025-01-19) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.7...v4.5.8) + +### Security + +* **HTTP** *Validation of header name and value*: Fixed a potential vulnerability on lack of proper header validation + for its name and value. See the [security advisory](https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-x5mq-jjr3-vmx6) + for more information. Credits to @neznaika0 for reporting. +* **Security** fix: ensure csrf token is string by @datlechin in https://github.com/codeigniter4/CodeIgniter4/pull/9365 + +### Fixed Bugs + +* fix: gather affected rows after query call failed by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9363 + +### Refactoring + +* refactor: use more strict result check on preg_match_all() result by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9361 +* refactor: Fix phpstan if.condNotBoolean by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9368 +* refactor: Fix phpstan when delete string key by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9369 +* refactor: Fix phpstan greaterOrEqual.invalid by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9370 +* refactor: Fix phpstan nullCoalesce by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9374 +* refactor: Fix phpstan isset offset by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9383 +* refactor: Fix phpstan return.missing by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9382 +* refactor: Fix phpstan booleanAnd.rightAlwaysTrue by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9367 +* refactor: Fix phpstan codeigniter.configArgumentInstanceof by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9390 +* refactor: Use `strtolower` with `str_contains`/`str_**_with` as replacement for `stripos` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9414 + +## [v4.5.7](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.7) (2024-12-31) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.6...v4.5.7) + +### Fixed Bugs + +* fix: handle namespaced helper found on Common helper by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9354 +* fix: `Forge::dropColumn()` always returns `false` on SQLite3 driver by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9351 + +### Refactoring + +* refactor: enable AddArrowFunctionReturnTypeRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9343 + +## [v4.5.6](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.6) (2024-12-28) +[Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.5...v4.5.6) + +### Fixed Bugs + +* fix: auto_link() converts invalid strings like `://codeigniter.com` by @kenjis in https://github.com/codeigniter4/CodeIgniter4/pull/9180 +* fix: change session start log level by @element-code in https://github.com/codeigniter4/CodeIgniter4/pull/9221 +* fix: `getValidated()` when validation multiple asterisk by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9220 +* fix: Parser - Equal key name replace conflict by @CosDiabos in https://github.com/codeigniter4/CodeIgniter4/pull/9246 +* fix: case-insensitivity in the `like()` method when in use with accented characters by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9238 +* fix: TypeError for routes when translateURIDashes is enabled by @maniaba in https://github.com/codeigniter4/CodeIgniter4/pull/9209 +* fix: `fetchGlobal()` with numeric key by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9251 +* fix: curl request crashes with params that give an int once hexed. by @ping-yee in https://github.com/codeigniter4/CodeIgniter4/pull/9198 +* docs: allow boolean values in the model for PHPStan by @ping-yee in https://github.com/codeigniter4/CodeIgniter4/pull/9276 +* fix: respect complex language strings when using validation by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9201 +* fix: `DownloadResponse` cache headers by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9237 +* docs: fix `@param` `ResponseInterface::setJSON()` also accepts objects by @JulianAtkins in https://github.com/codeigniter4/CodeIgniter4/pull/9287 +* fix: [CURLRequest] body contains "HTTP/1.0 200 Connection established" by @ping-yee in https://github.com/codeigniter4/CodeIgniter4/pull/9285 +* fix: `Postgre\Connection::reconnect()` `TypeError` in `pg_ping()` by @ping-yee in https://github.com/codeigniter4/CodeIgniter4/pull/9279 +* fix: primary key mapping in the model for the entity by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9307 +* fix: check if defined `WRITEPATH` exists by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9317 +* fix: handling binary data for prepared statement by @michalsn in https://github.com/codeigniter4/CodeIgniter4/pull/9337 + +### Refactoring + +* refactor: enable TypedPropertyFromAssignsRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9184 +* refactor: enable ClosureReturnTypeRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9187 +* refactor: remove unnecessary `is_countable()` check in `getMethodParams()` by @datamweb in https://github.com/codeigniter4/CodeIgniter4/pull/9206 +* refactor: add more readonly property definitions on AutoRouteCollector and SiteURI by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9210 +* refactor: starter key handling in SodiumHandler by @datamweb in https://github.com/codeigniter4/CodeIgniter4/pull/9207 +* refactor: enable rector code quality level 14 by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9232 +* refactor: cleanup `DatabaseHandler::gc()` for session by @grimpirate in https://github.com/codeigniter4/CodeIgniter4/pull/9230 +* refactor: enable rector code quality level 15 by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9243 +* refactor: enable SimplifyBoolIdenticalTrueRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9244 +* refactor: enable FlipTypeControlToUseExclusiveTypeRector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9253 +* refactor: flip assert and actual value position on tests by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9260 +* perf: Improve call as `service()` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9248 +* refactor: use compare empty array on Forge on keys property by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9267 +* refactor: Fix `phpstan` errors related to `Autoloader` by @neznaika0 in https://github.com/codeigniter4/CodeIgniter4/pull/9249 +* refactor: use `Superglobals` in setting 'REQUEST_METHOD' in `FeatureT… by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9294 +* refactor: use `baseURI` instead of `base_uri` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9296 +* refactor: Apply code quality level 31 for rector by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9303 +* refactor: rename `stdclass` to `stdClass` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9312 +* refactor: fix `phpDoc.parseError` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9313 +* refactor: fix `method.nameCase` errors by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9315 +* refactor: rename `controller` to `Controller` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9314 +* refactor: fix implicit array creation by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9316 +* refactor: follow up implicit variable array by @ddevsr in https://github.com/codeigniter4/CodeIgniter4/pull/9319 +* refactor: split phpstan-baseline into smaller files by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9299 +* refactor: upgrade to use phpstan 2 and rector 2 by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9322 +* refactor: fix `Forge::processIndexes()` for empty `$this->fields` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9330 +* refactor: `Reflection*::setAccessible()` is now no-op in PHP 8.1 by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9331 +* refactor: add `@throws RedirectException` in `Controller::initController` by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9327 +* refactor: fix warning on new static usage by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9342 +* refactor: fix used void return type by @paulbalandan in https://github.com/codeigniter4/CodeIgniter4/pull/9341 +* refactor: enable instanceof and strictBooleans rector set by @samsonasik in https://github.com/codeigniter4/CodeIgniter4/pull/9339 + ## [v4.5.5](https://github.com/codeigniter4/CodeIgniter4/tree/v4.5.5) (2024-09-07) [Full Changelog](https://github.com/codeigniter4/CodeIgniter4/compare/v4.5.4...v4.5.5) diff --git a/LICENSE b/LICENSE index 148e7f737ff6..24728f607f02 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ The MIT License (MIT) Copyright (c) 2014-2019 British Columbia Institute of Technology -Copyright (c) 2019-2024 CodeIgniter Foundation +Copyright (c) 2019-present CodeIgniter Foundation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/admin/RELEASE.md b/admin/RELEASE.md index 9ed91e55c183..697af85ff712 100644 --- a/admin/RELEASE.md +++ b/admin/RELEASE.md @@ -3,6 +3,7 @@ > Documentation guide based on the releases of `4.0.5` and `4.1.0` on January 31, 2021. > > Updated for `4.5.0` on April 7, 2024. +> Updated for `4.6.0` on January 19, 2025. > > -MGatner, kenjis @@ -33,10 +34,12 @@ git push upstream HEAD If you release a new minor version. -* [ ] Create PR to merge `4.y` into `develop` and merge it +* [ ] Create PR to merge `4.y` into `develop`: + * Title: `4.y.0 Merge code` + * Description: blank * [ ] Rename the current minor version (e.g., `4.5`) in Setting > Branches > - "Branch protection rules" to the next minor version. E.g. `4.5` → `4.6` -* [ ] Delete the merged `4.y` branch (This closes all PRs to the branch) + "Branch protection rules" to the next minor version (e.g. `4.5` → `4.6`). +* [ ] Delete the merged `4.y` branch (this closes all PRs to the branch). ## Preparation @@ -60,7 +63,7 @@ Work off direct clones of the repos so the release branches persist for a time. ## Changelog -When generating the changelog each Pull Request to be included must have one of +When generating the changelog, each pull request to be included must have one of the following [labels](https://github.com/codeigniter4/CodeIgniter4/labels): - **bug** ... PRs that fix bugs - **enhancement** ... PRs to improve existing functionalities @@ -72,11 +75,11 @@ PRs with breaking changes must have the following additional label: ### Generate Changelog -To auto-generate, navigate to the +To auto-generate the changelog, navigate to the [Releases](https://github.com/codeigniter4/CodeIgniter4/releases) page, click the "Draft a new release" button. -* Tag: `v4.x.x` (Create new tag) +* Choose a tag: `v4.x.x` (Create new tag: v4.x.x on publish) * Target: `develop` Click the "Generate release notes" button. @@ -85,7 +88,7 @@ Check the resulting content. If there are items in the *Others* section which should be included in the changelog, add a label to the PR and regenerate the changelog. -Copy the resulting content into **CHANGELOG.md** and adjust the format to match +Copy the resulting contents into **CHANGELOG.md** and adjust the format to match the existing content. ## Process @@ -95,23 +98,27 @@ the existing content. > been included with their PR, so this process assumes you will not be > generating much new content. -* [ ] Merge any Security Advisory PRs in private forks -* [ ] Replace **CHANGELOG.md** with the new version generated above +* [ ] Merge any security advisory PRs in private forks. +* [ ] Add the current version to **CHANGELOG.md** with the contents generated above. * [ ] Update **user_guide_src/source/changelogs/v4.x.x.rst** * Remove the section titles that have no items * [ ] Update **user_guide_src/source/installation/upgrade_4xx.rst** - * [ ] fill in the "All Changes" section, and add it to **upgrade_4xx.rst** - * git diff --name-status origin/master -- . ':!system' ':!tests' ':!user_guide_src' - * Note: `tests/` is not used for distribution repos. See `admin/starter/tests/` + * [ ] fill in the "All Changes" section using the following command, and add it to **upgrade_4xx.rst**: + ``` + git diff --name-status origin/master -- . ':!.github/' ':!admin/' ':!system/' ':!tests/' \ + ':!user_guide_src/' ':!utils/' ':!*.json' ':!*.xml' ':!*.dist' ':!rector.php' \ + ':!phpstan*' ':!psalm*' ':!.php-cs-fixer.*' ':!LICENSE' ':!CHANGELOG.md' + ``` + * Note: `tests/` is not used for distribution repos. See `admin/starter/tests/`. * [ ] Remove the section titles that have no items - * [ ] [Minor version only] Update the "from" version in the title. E.g., `from 4.3.x` → `from 4.3.8` -* [ ] Run `php admin/prepare-release.php 4.x.x` and push to origin + * [ ] [Minor version only] Update the "from" version in the title, (e.g., `from 4.3.x` → `from 4.3.8`). +* [ ] Run `php admin/prepare-release.php 4.x.x` and push to origin. * The above command does the following: * Create a new branch `release-4.x.x` * Update **system/CodeIgniter.php** with the new version number: `const CI_VERSION = '4.x.x';` - * Update **user_guide_src/source/conf.py** with the new `version = '4.x'` (if applicable) - and `release = '4.x.x'` + * Update **user_guide_src/source/conf.py** with the new `version = '4.x'` (if releasing + the minor version) and `release = '4.x.x'`. * Update **user_guide_src/source/changelogs/{version}.rst** * Set the date to format `Release Date: January 31, 2021` * Update **phpdoc.dist.xml** with the new `CodeIgniter v4.x API` @@ -126,15 +133,17 @@ the existing content. Previous version: #xxxx Release Code: TODO New Changelog: TODO - ``` + (plus checklist) -* [ ] Let all tests run, then review and merge the PR + ``` + +* [ ] Let all tests run, then review and merge the PR. * [ ] Create a new PR from `develop` to `master`: * Title: `4.x.x Ready code` * Description: blank * [ ] Merge the PR and wait for all tests. * [ ] Create a new Release: - * Tag: `v4.x.x` (Create new tag) + * Choose a tag: `v4.x.x` (Create new tag: v4.x.x on publish) * Target: `master` * Title: `CodeIgniter 4.x.x` * Description: @@ -167,31 +176,31 @@ the existing content. created when v4.3.8 was released. * [ ] Fast-forward `develop` branch to catch the merge commit from `master` ```console - git fetch origin + git fetch upstream git checkout develop - git merge origin/develop - git merge origin/master - git push origin HEAD + git merge upstream/develop + git merge upstream/master + git push upstream HEAD ``` * [ ] Update the next minor version branch `4.y`: ```console - git fetch origin - git checkout 4.y - git merge origin/4.y - git merge origin/develop - git push origin HEAD + git fetch upstream + git switch 4.y + git merge upstream/4.y + git merge upstream/develop + git push upstream HEAD ``` * [ ] [Minor version only] Create the new next minor version branch `4.z`: ```console - git fetch origin + git fetch upstream git switch develop git switch -c 4.z - git push origin HEAD + git push upstream HEAD ``` -* [ ] Request CVEs and Publish any Security Advisories that were resolved from private forks - (note: publishing is restricted to administrators): +* [ ] Request CVEs and publish any security advisories that were resolved from private forks + (note: publishing is restricted to administrators). * [ ] Announce the release on the forums and Slack channel - (note: this forum is restricted to administrators): + (note: this forum is restricted to administrators). * Make a new topic in the "News & Discussion" forums: https://forum.codeigniter.com/forum-2.html * The content is somewhat organic, but should include any major features and diff --git a/admin/create-new-changelog.php b/admin/create-new-changelog.php index ff333f42693f..cc7f8359a570 100644 --- a/admin/create-new-changelog.php +++ b/admin/create-new-changelog.php @@ -47,7 +47,7 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( $changelogIndex, '/\.\. toctree::\n :titlesonly:\n/u', - ".. toctree::\n :titlesonly:\n\n v{$version}" + ".. toctree::\n :titlesonly:\n\n v{$version}", ); // Replace {version} $length = mb_strlen("Version {$version}"); @@ -55,12 +55,12 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( $changelog, '/#################\nVersion {version}\n#################/u', - "{$underline}\nVersion {$version}\n{$underline}" + "{$underline}\nVersion {$version}\n{$underline}", ); replace_file_content( $changelog, '/{version}/u', - "{$version}" + "{$version}", ); // Copy upgrading @@ -72,7 +72,7 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( $upgradingIndex, '/ backward_compatibility_notes\n/u', - " backward_compatibility_notes\n\n upgrade_{$versionWithoutDots}" + " backward_compatibility_notes\n\n upgrade_{$versionWithoutDots}", ); // Replace {version} $length = mb_strlen("Upgrading from {$versionCurrent} to {$version}"); @@ -80,7 +80,7 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( $upgrading, '/##############################\nUpgrading from {version} to {version}\n##############################/u', - "{$underline}\nUpgrading from {$versionCurrent} to {$version}\n{$underline}" + "{$underline}\nUpgrading from {$versionCurrent} to {$version}\n{$underline}", ); // Commits diff --git a/admin/css/debug-toolbar/toolbar.scss b/admin/css/debug-toolbar/toolbar.scss index eec3d25546e3..65f4b802e22c 100644 --- a/admin/css/debug-toolbar/toolbar.scss +++ b/admin/css/debug-toolbar/toolbar.scss @@ -457,6 +457,31 @@ } } +@media screen and (max-width: 768px) { + #debug-bar { + table { + display: block; + overflow-x: auto; + font-size: 12px; + margin: 5px 5px 10px 5px; + + td, + th { + padding: 4px 6px; + } + } + + .timeline { + display: block; + white-space: nowrap; + font-size: 12px; + } + + .toolbar { + overflow-x: auto; + } + } + } // THEMES // ========================================================================== */ diff --git a/admin/framework/.gitignore b/admin/framework/.gitignore index 8071bd3d07f8..87e86b93bd42 100644 --- a/admin/framework/.gitignore +++ b/admin/framework/.gitignore @@ -61,7 +61,7 @@ writable/uploads/* !writable/uploads/index.html writable/debugbar/* -!writable/debugbar/.gitkeep +!writable/debugbar/index.html php_errors.log @@ -100,15 +100,15 @@ _modules/* .idea/ *.iml -# Netbeans -nbproject/ -build/ -nbbuild/ -dist/ -nbdist/ -nbactions.xml -nb-configuration.xml -.nb-gradle/ +# NetBeans +/nbproject/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/nbactions.xml +/nb-configuration.xml +/.nb-gradle/ # Sublime Text *.tmlanguage.cache diff --git a/admin/framework/composer.json b/admin/framework/composer.json index 79fc5c282e50..7a6e1c58a1e1 100644 --- a/admin/framework/composer.json +++ b/admin/framework/composer.json @@ -13,18 +13,18 @@ "php": "^8.1", "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.13", + "laminas/laminas-escaper": "^2.17", "psr/log": "^3.0" }, "require-dev": { "codeigniter/coding-standard": "^1.7", - "fakerphp/faker": "^1.9", + "fakerphp/faker": "^1.24", "friendsofphp/php-cs-fixer": "^3.47.1", - "kint-php/kint": "^5.0.4", - "mikey179/vfsstream": "^1.6", + "kint-php/kint": "^6.1", + "mikey179/vfsstream": "^1.6.12", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^10.5.16 || ^11.2", - "predis/predis": "^1.1 || ^2.0" + "predis/predis": "^3.0" }, "suggest": { "ext-curl": "If you use CURLRequest class", diff --git a/admin/prepare-release.php b/admin/prepare-release.php index c0dcab6866ce..5d66a43b8c86 100644 --- a/admin/prepare-release.php +++ b/admin/prepare-release.php @@ -33,31 +33,31 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( './system/CodeIgniter.php', '/public const CI_VERSION = \'.*?\';/u', - "public const CI_VERSION = '{$version}';" + "public const CI_VERSION = '{$version}';", ); // Updates version number in "conf.py". replace_file_content( './user_guide_src/source/conf.py', '/^version = \'.*?\'/mu', - "version = '{$minor}'" + "version = '{$minor}'", ); replace_file_content( './user_guide_src/source/conf.py', '/^release = \'.*?\'/mu', - "release = '{$version}'" + "release = '{$version}'", ); // Updates version number in "phpdoc.dist.xml". replace_file_content( './phpdoc.dist.xml', '!CodeIgniter v.*? API!mu', - "CodeIgniter v{$minor} API" + "CodeIgniter v{$minor} API", ); replace_file_content( './phpdoc.dist.xml', '//mu', - "" + "", ); // Updates release date in changelogs. @@ -65,7 +65,7 @@ function replace_file_content(string $path, string $pattern, string $replace): v replace_file_content( "./user_guide_src/source/changelogs/v{$version}.rst", '/^Release Date: .*/mu', - "Release Date: {$date}" + "Release Date: {$date}", ); // Commits diff --git a/admin/starter/.gitignore b/admin/starter/.gitignore index 8071bd3d07f8..87e86b93bd42 100644 --- a/admin/starter/.gitignore +++ b/admin/starter/.gitignore @@ -61,7 +61,7 @@ writable/uploads/* !writable/uploads/index.html writable/debugbar/* -!writable/debugbar/.gitkeep +!writable/debugbar/index.html php_errors.log @@ -100,15 +100,15 @@ _modules/* .idea/ *.iml -# Netbeans -nbproject/ -build/ -nbbuild/ -dist/ -nbdist/ -nbactions.xml -nb-configuration.xml -.nb-gradle/ +# NetBeans +/nbproject/ +/build/ +/nbbuild/ +/dist/ +/nbdist/ +/nbactions.xml +/nb-configuration.xml +/.nb-gradle/ # Sublime Text *.tmlanguage.cache diff --git a/admin/starter/app/Config/Paths.php b/admin/starter/app/Config/Paths.php index d0035fbcfb9b..39a902029882 100644 --- a/admin/starter/app/Config/Paths.php +++ b/admin/starter/app/Config/Paths.php @@ -12,6 +12,9 @@ * share a system folder between multiple applications, and more. * * All paths are relative to the project's root folder. + * + * NOTE: This class is required prior to Autoloader instantiation, + * and does not extend BaseConfig. */ class Paths { diff --git a/admin/starter/tests/_support/Libraries/ConfigReader.php b/admin/starter/tests/_support/Libraries/ConfigReader.php index 40d057acbe22..0bb4a8fcf598 100644 --- a/admin/starter/tests/_support/Libraries/ConfigReader.php +++ b/admin/starter/tests/_support/Libraries/ConfigReader.php @@ -2,6 +2,8 @@ namespace Tests\Support\Libraries; +use Config\App; + /** * Class ConfigReader * @@ -9,7 +11,7 @@ * loading external values. Used to read actual local values from * a config file. */ -class ConfigReader extends \Config\App +class ConfigReader extends App { public function __construct() { diff --git a/admin/starter/tests/unit/HealthTest.php b/admin/starter/tests/unit/HealthTest.php index f6a5a804802f..b3e480f4b0bf 100644 --- a/admin/starter/tests/unit/HealthTest.php +++ b/admin/starter/tests/unit/HealthTest.php @@ -32,7 +32,7 @@ public function testBaseUrlHasBeenSet(): void $config = new App(); $this->assertTrue( $validation->check($config->baseURL, 'valid_url'), - 'baseURL "' . $config->baseURL . '" in .env is not valid URL' + 'baseURL "' . $config->baseURL . '" in .env is not valid URL', ); } @@ -43,7 +43,7 @@ public function testBaseUrlHasBeenSet(): void // BaseURL in app/Config/App.php is a valid URL? $this->assertTrue( $validation->check($reader->baseURL, 'valid_url'), - 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL' + 'baseURL "' . $reader->baseURL . '" in app/Config/App.php is not valid URL', ); } } diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index 76cd9263556e..9a928241a0eb 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -17,8 +17,6 @@ * * NOTE: This class is required prior to Autoloader instantiation, * and does not extend BaseConfig. - * - * @immutable */ class Autoload extends AutoloadConfig { diff --git a/app/Config/Cache.php b/app/Config/Cache.php index 3fbade6840cc..1169c95ff7ee 100644 --- a/app/Config/Cache.php +++ b/app/Config/Cache.php @@ -34,18 +34,6 @@ class Cache extends BaseConfig */ public string $backupHandler = 'dummy'; - /** - * -------------------------------------------------------------------------- - * Cache Directory Path - * -------------------------------------------------------------------------- - * - * The path to where cache files should be stored, if using a file-based - * system. - * - * @deprecated Use the driver-specific variant under $file - */ - public string $storePath = WRITEPATH . 'cache/'; - /** * -------------------------------------------------------------------------- * Key Prefix @@ -86,10 +74,11 @@ class Cache extends BaseConfig * -------------------------------------------------------------------------- * File settings * -------------------------------------------------------------------------- + * * Your file storage preferences can be specified below, if you are using * the File driver. * - * @var array + * @var array{storePath?: string, mode?: int} */ public array $file = [ 'storePath' => WRITEPATH . 'cache/', @@ -100,12 +89,13 @@ class Cache extends BaseConfig * ------------------------------------------------------------------------- * Memcached settings * ------------------------------------------------------------------------- + * * Your Memcached servers can be specified below, if you are using * the Memcached drivers. * * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached * - * @var array + * @var array{host?: string, port?: int, weight?: int, raw?: bool} */ public array $memcached = [ 'host' => '127.0.0.1', @@ -118,10 +108,11 @@ class Cache extends BaseConfig * ------------------------------------------------------------------------- * Redis settings * ------------------------------------------------------------------------- + * * Your Redis server can be specified below, if you are using * the Redis or Predis drivers. * - * @var array + * @var array{host?: string, password?: string|null, port?: int, timeout?: int, database?: int} */ public array $redis = [ 'host' => '127.0.0.1', diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 47b92f832935..fb56bb1c5b03 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -77,18 +77,3 @@ defined('EXIT_DATABASE') || define('EXIT_DATABASE', 8); // database error defined('EXIT__AUTO_MIN') || define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code defined('EXIT__AUTO_MAX') || define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_LOW instead. - */ -define('EVENT_PRIORITY_LOW', 200); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_NORMAL instead. - */ -define('EVENT_PRIORITY_NORMAL', 100); - -/** - * @deprecated Use \CodeIgniter\Events\Events::PRIORITY_HIGH instead. - */ -define('EVENT_PRIORITY_HIGH', 10); diff --git a/app/Config/Cookie.php b/app/Config/Cookie.php index 84ccc0e99d80..3bad184797ce 100644 --- a/app/Config/Cookie.php +++ b/app/Config/Cookie.php @@ -85,7 +85,7 @@ class Cookie extends BaseConfig * (empty string) means default SameSite attribute set by browsers (`Lax`) * will be set on cookies. If set to `None`, `$secure` must also be set. * - * @phpstan-var 'None'|'Lax'|'Strict'|'' + * @var ''|'Lax'|'None'|'Strict' */ public string $samesite = 'Lax'; diff --git a/app/Config/Database.php b/app/Config/Database.php index 7a1fd21e8d10..d7939bc26f9e 100644 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -43,6 +43,7 @@ class Database extends Config 'failover' => [], 'port' => 3306, 'numberNative' => false, + 'foundRows' => false, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', @@ -64,6 +65,7 @@ class Database extends Config // 'failover' => [], // 'foreignKeys' => true, // 'busyTimeout' => 1000, + // 'synchronous' => null, // 'dateFormat' => [ // 'date' => 'Y-m-d', // 'datetime' => 'Y-m-d H:i:s', @@ -180,6 +182,7 @@ class Database extends Config 'port' => 3306, 'foreignKeys' => true, 'busyTimeout' => 1000, + 'synchronous' => null, 'dateFormat' => [ 'date' => 'Y-m-d', 'datetime' => 'Y-m-d H:i:s', diff --git a/app/Config/DocTypes.php b/app/Config/DocTypes.php index 7e8aaacf09dd..788d68fdc117 100644 --- a/app/Config/DocTypes.php +++ b/app/Config/DocTypes.php @@ -2,9 +2,6 @@ namespace Config; -/** - * @immutable - */ class DocTypes { /** diff --git a/app/Config/Feature.php b/app/Config/Feature.php index efd4a0b20ae8..ec1435af413f 100644 --- a/app/Config/Feature.php +++ b/app/Config/Feature.php @@ -10,9 +10,9 @@ class Feature extends BaseConfig { /** - * Use improved new auto routing instead of the default legacy version. + * Use improved new auto routing instead of the legacy version. */ - public bool $autoRoutesImproved = false; + public bool $autoRoutesImproved = true; /** * Use filter execution order in 4.4 or before. @@ -26,4 +26,12 @@ class Feature extends BaseConfig * If false, `limit(0)` returns no records. (the behavior of 3.1.9 or later in version 3.x.) */ public bool $limitZeroAsAll = true; + + /** + * Use strict location negotiation. + * + * By default, the locale is selected based on a loose comparison of the language code (ISO 639-1) + * Enabling strict comparison will also consider the region code (ISO 3166-1 alpha-2). + */ + public bool $strictLocaleNegotiation = false; } diff --git a/app/Config/Filters.php b/app/Config/Filters.php index eb46a1d7cee8..9c83ae94e55c 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -65,7 +65,10 @@ class Filters extends BaseFilters * List of filter aliases that are always * applied before and after every request. * - * @var array>>|array> + * @var array{ + * before: array|string}>|list, + * after: array|string}>|list + * } */ public array $globals = [ 'before' => [ diff --git a/app/Config/Format.php b/app/Config/Format.php index 2838f55ef0d9..0d334d72b3fb 100644 --- a/app/Config/Format.php +++ b/app/Config/Format.php @@ -3,7 +3,6 @@ namespace Config; use CodeIgniter\Config\BaseConfig; -use CodeIgniter\Format\FormatterInterface; use CodeIgniter\Format\JSONFormatter; use CodeIgniter\Format\XMLFormatter; @@ -62,16 +61,4 @@ class Format extends BaseConfig 'application/xml' => 0, 'text/xml' => 0, ]; - - /** - * A Factory method to return the appropriate formatter for the given mime type. - * - * @return FormatterInterface - * - * @deprecated This is an alias of `\CodeIgniter\Format\Format::getFormatter`. Use that instead. - */ - public function getFormatter(string $mime) - { - return service('format')->getFormatter($mime); - } } diff --git a/app/Config/Kint.php b/app/Config/Kint.php index d07078270145..931ad47f5fe4 100644 --- a/app/Config/Kint.php +++ b/app/Config/Kint.php @@ -3,7 +3,6 @@ namespace Config; use Kint\Parser\ConstructablePluginInterface; -use Kint\Renderer\AbstractRenderer; use Kint\Renderer\Rich\TabPluginInterface; use Kint\Renderer\Rich\ValuePluginInterface; @@ -41,7 +40,6 @@ class Kint */ public string $richTheme = 'aante-light.css'; public bool $richFolder = false; - public int $richSort = AbstractRenderer::SORT_FULL; /** * @var array>|null diff --git a/app/Config/Logger.php b/app/Config/Logger.php index ab6997e52fb9..799dc2c39080 100644 --- a/app/Config/Logger.php +++ b/app/Config/Logger.php @@ -4,6 +4,7 @@ use CodeIgniter\Config\BaseConfig; use CodeIgniter\Log\Handlers\FileHandler; +use CodeIgniter\Log\Handlers\HandlerInterface; class Logger extends BaseConfig { @@ -73,7 +74,7 @@ class Logger extends BaseConfig * Handlers are executed in the order defined in this array, starting with * the handler on top and continuing down. * - * @var array|string>> + * @var array, array|string>> */ public array $handlers = [ /* diff --git a/app/Config/Mimes.php b/app/Config/Mimes.php index 7722444abe7b..c2db7340cd7e 100644 --- a/app/Config/Mimes.php +++ b/app/Config/Mimes.php @@ -3,8 +3,6 @@ namespace Config; /** - * Mimes - * * This file contains an array of mime types. It is used by the * Upload class to help identify allowed file types. * @@ -15,8 +13,6 @@ * * When working with mime types, please make sure you have the ´fileinfo´ * extension enabled to reliably detect the media types. - * - * @immutable */ class Mimes { @@ -482,6 +478,8 @@ class Mimes 'application/sla', 'application/vnd.ms-pki.stl', 'application/x-navistyle', + 'model/stl', + 'application/octet-stream', ], ]; diff --git a/app/Config/Modules.php b/app/Config/Modules.php index 8d4bf56544b0..9e03fa491260 100644 --- a/app/Config/Modules.php +++ b/app/Config/Modules.php @@ -9,8 +9,6 @@ * * NOTE: This class is required prior to Autoloader instantiation, * and does not extend BaseConfig. - * - * @immutable */ class Modules extends BaseModules { diff --git a/app/Config/Optimize.php b/app/Config/Optimize.php index 6fb441fd2288..481e645f57b2 100644 --- a/app/Config/Optimize.php +++ b/app/Config/Optimize.php @@ -7,8 +7,6 @@ * * NOTE: This class does not extend BaseConfig for performance reasons. * So you cannot replace the property values with Environment Variables. - * - * @immutable */ class Optimize { diff --git a/app/Config/Paths.php b/app/Config/Paths.php index 262c745ffa95..3dc9c5d93951 100644 --- a/app/Config/Paths.php +++ b/app/Config/Paths.php @@ -15,8 +15,6 @@ * * NOTE: This class is required prior to Autoloader instantiation, * and does not extend BaseConfig. - * - * @immutable */ class Paths { diff --git a/app/Config/Routing.php b/app/Config/Routing.php index 7abadc7b76f0..3005543a9e79 100644 --- a/app/Config/Routing.php +++ b/app/Config/Routing.php @@ -136,5 +136,5 @@ class Routing extends BaseRouting * * Default: false */ - public bool $translateUriToCamelCase = false; + public bool $translateUriToCamelCase = true; } diff --git a/app/Config/Security.php b/app/Config/Security.php index 0858b9bbb257..635f8b77b9b7 100644 --- a/app/Config/Security.php +++ b/app/Config/Security.php @@ -83,21 +83,4 @@ class Security extends BaseConfig * @see https://codeigniter4.github.io/userguide/libraries/security.html#redirection-on-failure */ public bool $redirect = (ENVIRONMENT === 'production'); - - /** - * -------------------------------------------------------------------------- - * CSRF SameSite - * -------------------------------------------------------------------------- - * - * Setting for CSRF SameSite cookie token. - * - * Allowed values are: None - Lax - Strict - ''. - * - * Defaults to `Lax` as recommended in this link: - * - * @see https://portswigger.net/web-security/csrf/samesite-cookies - * - * @deprecated `Config\Cookie` $samesite property is used. - */ - public string $samesite = 'Lax'; } diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 689405bdf314..ab45a7710be9 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -3,44 +3,28 @@ namespace App\Controllers; use CodeIgniter\Controller; -use CodeIgniter\HTTP\CLIRequest; -use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Psr\Log\LoggerInterface; /** - * Class BaseController - * * BaseController provides a convenient place for loading components * and performing functions that are needed by all your controllers. + * * Extend this class in any new controllers: + * ``` * class Home extends BaseController + * ``` * - * For security be sure to declare any new methods as protected or private. + * For security, be sure to declare any new methods as protected or private. */ abstract class BaseController extends Controller { - /** - * Instance of the main Request object. - * - * @var CLIRequest|IncomingRequest - */ - protected $request; - - /** - * An array of helpers to be loaded automatically upon - * class instantiation. These helpers will be available - * to all other controllers that extend BaseController. - * - * @var list - */ - protected $helpers = []; - /** * Be sure to declare properties for any property fetch you initialized. * The creation of dynamic property is deprecated in PHP 8.2. */ + // protected $session; /** @@ -48,11 +32,14 @@ abstract class BaseController extends Controller */ public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { - // Do Not Edit This Line + // Load here all helpers you want to be available in your controllers that extend BaseController. + // Caution: Do not put the this below the parent::initController() call below. + // $this->helpers = ['form', 'url']; + + // Caution: Do not edit this line. parent::initController($request, $response, $logger); // Preload any models, libraries, etc, here. - - // E.g.: $this->session = service('session'); + // $this->session = service('session'); } } diff --git a/app/Views/errors/cli/error_exception.php b/app/Views/errors/cli/error_exception.php index 9f47d25141d2..624f3b5b0600 100644 --- a/app/Views/errors/cli/error_exception.php +++ b/app/Views/errors/cli/error_exception.php @@ -50,9 +50,9 @@ $function .= $padClass . $error['function']; } - $args = implode(', ', array_map(static fn ($value) => match (true) { + $args = implode(', ', array_map(static fn ($value): string => match (true) { is_object($value) => 'Object(' . $value::class . ')', - is_array($value) => count($value) ? '[...]' : '[]', + is_array($value) => $value !== [] ? '[...]' : '[]', $value === null => 'null', // return the lowercased version default => var_export($value, true), }, array_values($error['args'] ?? []))); diff --git a/app/Views/errors/html/debug.css b/app/Views/errors/html/debug.css index 6a050c8bb462..b8539a420221 100644 --- a/app/Views/errors/html/debug.css +++ b/app/Views/errors/html/debug.css @@ -3,7 +3,7 @@ --main-text-color: #555; --dark-text-color: #222; --light-text-color: #c7c7c7; - --brand-primary-color: #E06E3F; + --brand-primary-color: #DC4814; --light-bg-color: #ededee; --dark-bg-color: #404040; } @@ -41,6 +41,7 @@ p.lead { .header { background: var(--light-bg-color); color: var(--dark-text-color); + margin-top: 2.17rem; } .header .container { padding: 1rem; @@ -65,10 +66,13 @@ p.lead { } .environment { - background: var(--dark-bg-color); - color: var(--light-text-color); + background: var(--brand-primary-color); + color: var(--main-bg-color); text-align: center; - padding: 0.2rem; + padding: calc(4px + 0.2083vw); + width: 100%; + top: 0; + position: fixed; } .source { diff --git a/app/Views/errors/html/error_400.php b/app/Views/errors/html/error_400.php new file mode 100644 index 000000000000..555da042be30 --- /dev/null +++ b/app/Views/errors/html/error_400.php @@ -0,0 +1,84 @@ + + + + + <?= lang('Errors.badRequest') ?> + + + + +
+

400

+ +

+ + + + + +

+
+ + diff --git a/app/Views/errors/html/error_exception.php b/app/Views/errors/html/error_exception.php index d5e0c2ec7ee0..2c4e00911365 100644 --- a/app/Views/errors/html/error_exception.php +++ b/app/Views/errors/html/error_exception.php @@ -24,7 +24,7 @@
- Displayed at — + Displayed at — PHP: — CodeIgniter: -- Environment: diff --git a/composer.json b/composer.json index af7aa5484c9a..4e2da479b0a4 100644 --- a/composer.json +++ b/composer.json @@ -13,22 +13,23 @@ "php": "^8.1", "ext-intl": "*", "ext-mbstring": "*", - "laminas/laminas-escaper": "^2.13", + "laminas/laminas-escaper": "^2.17", "psr/log": "^3.0" }, "require-dev": { - "codeigniter/phpstan-codeigniter": "^1.4", - "fakerphp/faker": "^1.9", - "kint-php/kint": "^5.0.4", - "mikey179/vfsstream": "^1.6", + "codeigniter/phpstan-codeigniter": "1.x-dev", + "fakerphp/faker": "^1.24", + "kint-php/kint": "^6.1", + "mikey179/vfsstream": "^1.6.12", "nexusphp/tachycardia": "^2.0", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^1.11", - "phpstan/phpstan-strict-rules": "^1.6", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpcov": "^9.0.2 || ^10.0", "phpunit/phpunit": "^10.5.16 || ^11.2", - "predis/predis": "^1.1 || ^2.0", - "rector/rector": "1.2.10" + "predis/predis": "^3.0", + "rector/rector": "2.3.0", + "shipmonk/phpstan-baseline-per-identifier": "^2.0" }, "replace": { "codeigniter4/framework": "self.version" @@ -80,7 +81,7 @@ }, "extra": { "branch-alias": { - "dev-develop": "4.x-dev" + "dev-*": "4.6.x-dev" } }, "scripts": { @@ -88,7 +89,7 @@ "CodeIgniter\\ComposerScripts::postUpdate" ], "post-autoload-dump": [ - "@composer update --working-dir=utils" + "@composer update --ansi --working-dir=utils" ], "analyze": [ "Composer\\Config::disableProcessTimeout", @@ -110,7 +111,10 @@ "utils/vendor/bin/php-cs-fixer fix --ansi --verbose --diff" ], "metrics": "utils/vendor/bin/phpmetrics --config=phpmetrics.json", - "phpstan:baseline": "vendor/bin/phpstan analyse --ansi --generate-baseline=phpstan-baseline.php", + "phpstan:baseline": [ + "phpstan analyse --ansi --generate-baseline=utils/phpstan-baseline/loader.neon", + "split-phpstan-baseline utils/phpstan-baseline/loader.neon" + ], "phpstan:check": "vendor/bin/phpstan analyse --verbose --ansi", "sa": "@analyze", "style": "@cs-fix", diff --git a/contributing/pull_request.md b/contributing/pull_request.md index 8e3b5ed9f419..b5db40417873 100644 --- a/contributing/pull_request.md +++ b/contributing/pull_request.md @@ -96,7 +96,7 @@ implementation comments to explain potentially confusing sections of code, and documentation comments before each public or protected class/interface/trait, method, and variable. -Do not add PHPDoc comments that are superficial, duplicated, or stating the obvious. +Do not add PHPDoc comments that are superficial, duplicated, or stating the obvious. It is not recommended to reuse comments if the parent class or interface already contains a description of the child element. See the following for more information. diff --git a/contributing/styleguide.md b/contributing/styleguide.md index 95e68bb37ddb..1d57aa698358 100644 --- a/contributing/styleguide.md +++ b/contributing/styleguide.md @@ -241,6 +241,7 @@ of the classes they declare. - */ public function analyse(string $data): void {}; ``` +- SHOULD NOT duplicate comments from the parent class or interface. ### PHPUnit Assertions diff --git a/deptrac.yaml b/deptrac.yaml index 178de9a74fd7..7f5687af4bca 100644 --- a/deptrac.yaml +++ b/deptrac.yaml @@ -8,7 +8,7 @@ # - Exception # - Service # - Validation\FormatRules -parameters: +deptrac: paths: - ./app - ./system @@ -17,148 +17,149 @@ parameters: layers: - name: API collectors: - - type: className - regex: ^Codeigniter\\API\\.* + - type: classNameRegex + value: '/^CodeIgniter\\API\\.*$/' - name: Cache collectors: - - type: className - regex: ^Codeigniter\\Cache\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Cache\\.*$/' - name: Controller collectors: - - type: className - regex: ^CodeIgniter\\Controller$ + - type: classNameRegex + value: '/^CodeIgniter\\Controller$/' - name: Cookie collectors: - - type: className - regex: ^Codeigniter\\Cookie\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Cookie\\.*$/' - name: Database collectors: - - type: className - regex: ^Codeigniter\\Database\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Database\\.*$/' - name: DataCaster collectors: - - type: className - regex: ^Codeigniter\\DataCaster\\.* + - type: classNameRegex + value: '/^CodeIgniter\\DataCaster\\.*$/' - name: DataConverter collectors: - - type: className - regex: ^Codeigniter\\DataConverter\\.* + - type: classNameRegex + value: '/^CodeIgniter\\DataConverter\\.*$/' - name: Email collectors: - - type: className - regex: ^Codeigniter\\Email\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Email\\.*$/' - name: Encryption collectors: - - type: className - regex: ^Codeigniter\\Encryption\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Encryption\\.*$/' - name: Entity collectors: - - type: className - regex: ^Codeigniter\\Entity\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Entity\\.*$/' - name: Events collectors: - - type: className - regex: ^Codeigniter\\Events\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Events\\.*$/' - name: Files collectors: - - type: className - regex: ^Codeigniter\\Files\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Files\\.*$/' - name: Filters collectors: - type: bool must: - - type: className - regex: ^Codeigniter\\Filters\\Filter.* + - type: classNameRegex + value: '/^CodeIgniter\\Filters\\Filter.*$/' - name: Format collectors: - - type: className - regex: ^Codeigniter\\Format\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Format\\.*$/' - name: Honeypot collectors: - - type: className - regex: ^Codeigniter\\.*Honeypot.* # includes the Filter + - type: classNameRegex + # includes the Filter + value: '/^CodeIgniter\\.*Honeypot.*$/' - name: HTTP collectors: - type: bool must: - - type: className - regex: ^Codeigniter\\HTTP\\.* + - type: classNameRegex + value: '/^CodeIgniter\\HTTP\\.*$/' must_not: - - type: className - regex: (Exception|URI) + - type: classNameRegex + value: '(Exception|URI)' - name: I18n collectors: - - type: className - regex: ^Codeigniter\\I18n\\.* + - type: classNameRegex + value: '/^CodeIgniter\\I18n\\.*$/' - name: Images collectors: - - type: className - regex: ^Codeigniter\\Images\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Images\\.*$/' - name: Language collectors: - - type: className - regex: ^Codeigniter\\Language\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Language\\.*$/' - name: Log collectors: - - type: className - regex: ^Codeigniter\\Log\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Log\\.*$/' - name: Model collectors: - - type: className - regex: ^Codeigniter\\.*Model$ + - type: classNameRegex + value: '/^CodeIgniter\\.*Model$/' - name: Modules collectors: - - type: className - regex: ^Codeigniter\\Modules\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Modules\\.*$/' - name: Pager collectors: - - type: className - regex: ^Codeigniter\\Pager\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Pager\\.*$/' - name: Publisher collectors: - - type: className - regex: ^Codeigniter\\Publisher\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Publisher\\.*$/' - name: RESTful collectors: - - type: className - regex: ^Codeigniter\\RESTful\\.* + - type: classNameRegex + value: '/^CodeIgniter\\RESTful\\.*$/' - name: Router collectors: - - type: className - regex: ^Codeigniter\\Router\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Router\\.*$/' - name: Security collectors: - - type: className - regex: ^Codeigniter\\Security\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Security\\.*$/' - name: Session collectors: - - type: className - regex: ^Codeigniter\\Session\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Session\\.*$/' - name: Throttle collectors: - - type: className - regex: ^Codeigniter\\Throttle\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Throttle\\.*$/' - name: Typography collectors: - - type: className - regex: ^Codeigniter\\Typography\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Typography\\.*$/' - name: URI collectors: - - type: className - regex: ^CodeIgniter\\HTTP\\URI$ + - type: classNameRegex + value: '/^CodeIgniter\\HTTP\\URI$/' - name: Validation collectors: - type: bool must: - - type: className - regex: ^Codeigniter\\Validation\\.* + - type: classNameRegex + value: '/^CodeIgniter\\Validation\\.*$/' must_not: - - type: className - regex: ^Codeigniter\\Validation\\FormatRules$ + - type: classNameRegex + value: '/^CodeIgniter\\Validation\\FormatRules$/' - name: View collectors: - - type: className - regex: ^Codeigniter\\View\\.* + - type: classNameRegex + value: '/^CodeIgniter\\View\\.*$/' ruleset: API: - Format diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml index 7f13b0e78cff..2c811d13b74b 100644 --- a/phpdoc.dist.xml +++ b/phpdoc.dist.xml @@ -5,12 +5,12 @@ xmlns="https://www.phpdoc.org" xsi:noNamespaceSchemaLocation="https://docs.phpdoc.org/latest/phpdoc.xsd" > - CodeIgniter v4.5 API + CodeIgniter v4.6 API api/build/ api/cache/ - + system diff --git a/phpstan-baseline.php b/phpstan-baseline.php deleted file mode 100644 index e775d6b9f5ef..000000000000 --- a/phpstan-baseline.php +++ /dev/null @@ -1,18257 +0,0 @@ - '#^PHPDoc type array\\\\>\\> of property Config\\\\Filters\\:\\:\\$filters is not the same as PHPDoc type array of overridden property CodeIgniter\\\\Config\\\\Filters\\:\\:\\$filters\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/app/Config/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: isset.property - 'message' => '#^Property Config\\\\Autoload\\:\\:\\$helpers \\(array\\\\) in isset\\(\\) is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Autoloader/Autoloader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:__call\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:chunk\\(\\) has parameter \\$userFunc with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:cleanValidationRules\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:cleanValidationRules\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:convertToReturnType\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:delete\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doDelete\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doFind\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doFind\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doFindAll\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doFindColumn\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doFirst\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doInsertBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doProtectFields\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doProtectFieldsForInsert\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doUpdate\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:doUpdateBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:find\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:findAll\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:findColumn\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:first\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:getIdValue\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:getValidationMessages\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:getValidationRules\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:getValidationRules\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:paginate\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setAllowedFields\\(\\) has parameter \\$allowedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setCreatedField\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setUpdatedField\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setValidationMessage\\(\\) has parameter \\$fieldMessages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setValidationMessages\\(\\) has parameter \\$validationMessages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:setValidationRule\\(\\) has parameter \\$fieldRules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:transformDataToArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:trigger\\(\\) has parameter \\$eventData with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:trigger\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\BaseModel\\:\\:update\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\ given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\|int\\|string\\|null given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, array\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: notIdentical.alwaysTrue - 'message' => '#^Strict comparison using \\!\\=\\= between mixed and null will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/BaseModel.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'ANSICON\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'NO_COLOR\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'argv\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:getOptions\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:getSegments\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:isZeroOptions\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:printKeysAndValues\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:prompt\\(\\) has parameter \\$validation with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:promptByKey\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:promptByKey\\(\\) has parameter \\$text with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:promptByKey\\(\\) has parameter \\$validation with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:promptByMultipleKeys\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:promptByMultipleKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:table\\(\\) has parameter \\$tbody with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:table\\(\\) has parameter \\$thead with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLI\\:\\:validate\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\ given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\|string\\|null given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: booleanOr.leftNotBoolean - 'message' => '#^Only booleans are allowed in \\|\\|, string given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: booleanOr.leftNotBoolean - 'message' => '#^Only booleans are allowed in \\|\\|, string\\|null given on the left side\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: booleanOr.rightNotBoolean - 'message' => '#^Only booleans are allowed in \\|\\|, string\\|null given on the right side\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\CLI\\\\CLI\\:\\:\\$options type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\CLI\\\\CLI\\:\\:\\$segments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/CLI/CLI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Commands\\:\\:getCommandAlternatives\\(\\) has parameter \\$collection with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Commands\\:\\:getCommandAlternatives\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Commands\\:\\:getCommands\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Commands\\:\\:run\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Commands\\:\\:verifyCommand\\(\\) has parameter \\$commands with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\CLI\\\\Commands\\:\\:\\$commands type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Commands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Console\\:\\:parseParamsForHelpOption\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Console.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\Console\\:\\:parseParamsForHelpOption\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CLI/Console.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\CacheInterface\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/CacheInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\CacheInterface\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/CacheInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\CacheInterface\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/CacheInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\CacheInterface\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/CacheInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\FactoriesCache\\\\FileVarExportHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/FactoriesCache/FileVarExportHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\FactoriesCache\\\\FileVarExportHandler\\:\\:save\\(\\) has parameter \\$val with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/FactoriesCache/FileVarExportHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\BaseHandler\\:\\:remember\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, string given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\DummyHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/DummyHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\DummyHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/DummyHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\DummyHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/DummyHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\DummyHandler\\:\\:remember\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/DummyHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\DummyHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/DummyHandler.php', -]; -$ignoreErrors[] = [ - // identifier: function.alreadyNarrowedType - 'message' => '#^Call to function property_exists\\(\\) with Config\\\\Cache and \'file\' will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:getDirFileInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:getFileInfo\\(\\) has parameter \\$returnedValues with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:getFileInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$result might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandler\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, mixed given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandler\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/PredisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandler\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\WincacheHandler\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/WincacheHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\WincacheHandler\\:\\:getCacheInfo\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/WincacheHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\WincacheHandler\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/WincacheHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\WincacheHandler\\:\\:save\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cache/Handlers/WincacheHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CodeIgniter\\:\\:getPerformanceStats\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/CodeIgniter.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Database/CreateDatabase.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Database/MigrateStatus.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$params \\(array\\\\) of method CodeIgniter\\\\Commands\\\\Database\\\\MigrateStatus\\:\\:run\\(\\) should be contravariant with parameter \\$params \\(array\\\\) of method CodeIgniter\\\\CLI\\\\BaseCommand\\:\\:run\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Database/MigrateStatus.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Database/Seed.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'encryption\\.key\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Encryption/GenerateKey.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\ListCommands\\:\\:listFull\\(\\) has parameter \\$commands with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/ListCommands.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\ListCommands\\:\\:listSimple\\(\\) has parameter \\$commands with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/ListCommands.php', -]; -$ignoreErrors[] = [ - // identifier: method.void - 'message' => '#^Result of method CodeIgniter\\\\Commands\\\\ListCommands\\:\\:listFull\\(\\) \\(void\\) is used\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/ListCommands.php', -]; -$ignoreErrors[] = [ - // identifier: method.void - 'message' => '#^Result of method CodeIgniter\\\\Commands\\\\ListCommands\\:\\:listSimple\\(\\) \\(void\\) is used\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/ListCommands.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, int given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Server/Serve.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:arrayToTableRows\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:arrayToTableRows\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:buildMultiArray\\(\\) has parameter \\$fromKeys with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:buildMultiArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:findTranslationsInFile\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinder\\:\\:templateFile\\(\\) has parameter \\$language with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Translation/LocalizationFinder.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'CI_ENVIRONMENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Commands/Utilities/Environment.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\FilterCheck\\:\\:addRequiredFilters\\(\\) has parameter \\$filters with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/FilterCheck.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\FilterCheck\\:\\:addRequiredFilters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/FilterCheck.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Namespaces\\:\\:outputAllNamespaces\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Namespaces.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Namespaces\\:\\:outputAllNamespaces\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Namespaces.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Namespaces\\:\\:outputCINamespaces\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Namespaces.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Namespaces\\:\\:outputCINamespaces\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Namespaces.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Namespaces.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_HOST\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-falsy\\-string directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, Config\\\\Routing given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string\\|null given\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes.php', -]; -$ignoreErrors[] = [ - // identifier: variable.implicitArray - 'message' => '#^Implicit array creation is not allowed \\- variable \\$filters might not exist\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\AutoRouteCollector\\:\\:addFilters\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\AutoRouteCollector\\:\\:addFilters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\AutoRouteCollector\\:\\:generateSampleUri\\(\\) has parameter \\$route with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\ControllerMethodReader\\:\\:getParameters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\ControllerMethodReader\\:\\:getRouteForDefaultController\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\ControllerMethodReader\\:\\:read\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\ControllerMethodReader\\:\\:getRouteWithoutController\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/ControllerMethodReader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\FilterFinder\\:\\:getRouteFilters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Commands/Utilities/Routes/FilterFinder.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REMOTE_ADDR\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REQUEST_METHOD\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset string directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function cache\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function class_uses_recursive\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function cookie\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function db_connect\\(\\) has parameter \\$db with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function esc\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function esc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function helper\\(\\) has parameter \\$filenames with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function lang\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function log_message\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function old\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function service\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function session\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function single_service\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function stringify_attributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function trait_uses_recursive\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function view\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function view\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function view_cell\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, string\\|null given on the left side\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Common.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\ComposerScripts\\:\\:postUpdate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/ComposerScripts.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'CI_ENVIRONMENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Config/AutoloadConfig.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset non\\-falsy\\-string directly on \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Config/BaseConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\BaseConfig\\:\\:__set_state\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\BaseConfig\\:\\:initEnvValue\\(\\) has parameter \\$property with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\BaseConfig\\:\\:\\$registrars type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseConfig.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Config/BaseService.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\BaseService\\:\\:__callStatic\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseService.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\BaseService\\:\\:getSharedInstance\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseService.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\BaseService\\:\\:\\$services type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/BaseService.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset string directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Config/DotEnv.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset string of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/DotEnv.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Config/DotEnv.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\DotEnv\\:\\:normaliseVariable\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/DotEnv.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\DotEnv\\:\\:parse\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/DotEnv.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:__callStatic\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:createInstance\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:getComponentInstances\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:getDefinedInstance\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:getDefinedInstance\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:locateClass\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:setComponentInstances\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:setOptions\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:verifyInstanceOf\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Factories\\:\\:verifyPreferApp\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factories.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\Factory\\:\\:\\$default type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factory.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\Factory\\:\\:\\$models type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Factory.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\Filters\\:\\:\\$filters type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_PROTOCOL\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.configArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(\'Config\\\\\\\\Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Services\\:\\:curlrequest\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Services\\:\\:email\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Services\\:\\:superglobals\\(\\) has parameter \\$get with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\Services\\:\\:superglobals\\(\\) has parameter \\$server with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Config/Services.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:setValidator\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:setValidator\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:validate\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:validate\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:validateData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:validateData\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Controller\\:\\:validateData\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Controller\\:\\:\\$request \\(CodeIgniter\\\\HTTP\\\\CLIRequest\\|CodeIgniter\\\\HTTP\\\\IncomingRequest\\) does not accept CodeIgniter\\\\HTTP\\\\RequestInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Controller.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$offset \\(string\\) of method CodeIgniter\\\\Cookie\\\\Cookie\\:\\:offsetSet\\(\\) should be contravariant with parameter \\$offset \\(string\\|null\\) of method ArrayAccess\\\\:\\:offsetSet\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cookie/Cookie.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/Cookie/Cookie.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieStore\\:\\:setCookie\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cookie/CookieStore.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieStore\\:\\:setRawCookie\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cookie/CookieStore.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieStore\\:\\:validateCookies\\(\\) has parameter \\$cookies with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Cookie/CookieStore.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataCaster\\\\Cast\\\\ArrayCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/DataCaster/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataCaster\\\\Cast\\\\CSVCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/DataCaster/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataCaster\\\\Cast\\\\JsonCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/DataCaster/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverter\\:\\:fromDataSource\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/DataConverter/DataConverter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverter\\:\\:toDataSource\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/DataConverter/DataConverter.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 29, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:__construct\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:__construct\\(\\) has parameter \\$tableName with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:_whereIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:_whereIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:addUnionStatement\\(\\) has parameter \\$union with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:batchObjectToArray\\(\\) has parameter \\$object with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:batchObjectToArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:buildSubquery\\(\\) has parameter \\$builder with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:delete\\(\\) has parameter \\$where with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:deleteBatch\\(\\) has parameter \\$constraints with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:deleteBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:fieldsFromQuery\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:formatValues\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:formatValues\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:from\\(\\) has parameter \\$from with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getBinds\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getCompiledQBWhere\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getOperator\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getSetData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getWhere\\(\\) has parameter \\$where with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:groupBy\\(\\) has parameter \\$by with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:having\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:havingIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:havingIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:havingLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:havingNotIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:havingNotIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:insert\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:insertBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:like\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:notHavingLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:notLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:objectToArray\\(\\) has parameter \\$object with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:objectToArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:onConstraint\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHaving\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHavingIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHavingIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHavingLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHavingNotIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orHavingNotIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orNotHavingLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orNotLike\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orWhere\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orWhereIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orWhereIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orWhereNotIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orWhereNotIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:replace\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:resetRun\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:resetRun\\(\\) has parameter \\$qbResetItems with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:resetSelect\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:resetWrite\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:set\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:setData\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:setQueryAsData\\(\\) has parameter \\$columns with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:setUpdateBatch\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:trackAliases\\(\\) has parameter \\$table with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:union\\(\\) has parameter \\$union with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:unionAll\\(\\) has parameter \\$union with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:update\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:update\\(\\) has parameter \\$where with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:updateBatch\\(\\) has parameter \\$constraints with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:updateBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:updateFields\\(\\) has parameter \\$ignore with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:upsert\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:upsertBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:where\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:whereHaving\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:whereIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:whereIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:whereNotIn\\(\\) has parameter \\$values with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:whereNotIn\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: isset.offset - 'message' => '#^Offset 4 on array\\{string, string, string, string, string, string\\} in isset\\(\\) always exists and is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, TWhenNot given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: elseif.condNotBoolean - 'message' => '#^Only booleans are allowed in an elseif condition, \\(callable\\)\\|null given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, TWhen given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\.\\.\\.\\$arrays of function array_map expects array, int\\|string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBFrom type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBGroupBy type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBHaving type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBJoin type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBOptions type has no value type specified in iterable type array\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBOrderBy type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBSelect type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$QBWhere type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$binds type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$bindsKeyCount type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$db \\(CodeIgniter\\\\Database\\\\BaseConnection\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$joinTypes type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$randomKeyword type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$supportedIgnoreStatements type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Database\\\\QueryInterface\\:\\:getOriginalQuery\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 13, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:__construct\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:callFunction\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:escape\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:escape\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:escapeIdentifiers\\(\\) has parameter \\$item with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:escapeIdentifiers\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:foreignKeyDataToObjects\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:prepare\\(\\) has parameter \\$func with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:protectIdentifiers\\(\\) has parameter \\$item with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:protectIdentifiers\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:query\\(\\) has parameter \\$binds with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:setAliasedTables\\(\\) has parameter \\$aliases with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:table\\(\\) has parameter \\$tableName with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$aliasedTables type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$dataCache type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$encrypt type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$escapeChar type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$failover type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$pregEscapeChar type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$reservedIdentifiers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:error\\(\\) should be covariant with return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\ConnectionInterface\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseConnection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/BasePreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BasePreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BasePreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BasePreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BasePreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Database\\\\BasePreparedQuery\\:\\:execute\\(\\) has parameter \\$data with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BasePreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BasePreparedQuery\\:\\:prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BasePreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getCustomResultObject\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getFirstRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getLastRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getNextRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getPreviousRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getResult\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getResultArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getRowArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getUnbufferedRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:setRow\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseResult\\:\\:setRow\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$className \\(class\\-string\\) of method CodeIgniter\\\\Database\\\\BaseResult\\:\\:getCustomResultObject\\(\\) should be contravariant with parameter \\$className \\(string\\) of method CodeIgniter\\\\Database\\\\ResultInterface\\\\:\\:getCustomResultObject\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseResult\\:\\:\\$customResultObject type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseResult\\:\\:\\$resultArray type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseResult\\:\\:\\$rowData type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseResult.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Database/BaseUtils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseUtils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseUtils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseUtils\\:\\:backup\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseUtils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseUtils\\:\\:getXMLFromResult\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseUtils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseUtils\\:\\:listDatabases\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/BaseUtils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Config\\:\\:connect\\(\\) has parameter \\$group with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Config\\:\\:ensureFactory\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Config\\:\\:forge\\(\\) has parameter \\$group with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Config\\:\\:getConnections\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Config\\:\\:utils\\(\\) has parameter \\$group with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Config\\:\\:\\$instances type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:callFunction\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:callFunction\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:escape\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:escape\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:query\\(\\) has parameter \\$binds with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:table\\(\\) has parameter \\$tableName with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ConnectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Database\\:\\:initDriver\\(\\) has parameter \\$argument with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Database\\:\\:load\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Database\\:\\:parseDSN\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Database\\:\\:parseDSN\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Database\\:\\:\\$connections type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Exceptions\\\\DataException\\:\\:forEmptyInputGiven\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Exceptions/DataException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Exceptions\\\\DataException\\:\\:forFindColumnHaveMultipleColumns\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Exceptions/DataException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Exceptions\\\\DataException\\:\\:forInvalidAllowedFields\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Exceptions/DataException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Exceptions\\\\DataException\\:\\:forTableNotFound\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Exceptions/DataException.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 12, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeDefault\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeDefault\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeDefault\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeType\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeType\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnique\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnique\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnique\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnsigned\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnsigned\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_attributeUnsigned\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_createTable\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_createTableAttributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_processFields\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_processForeignKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:_processIndexes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:addColumn\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:addField\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:addKey\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:addPrimaryKey\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:addUniqueKey\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:createTable\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:dropColumn\\(\\) has parameter \\$columnNames with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:modifyColumn\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Forge\\:\\:reset\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, string given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$fields \\(array\\\\) does not accept array\\\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$fields type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$fkAllowActions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$foreignKeys type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$uniqueKeys type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Migration\\:\\:down\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Migration.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Migration\\:\\:up\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Migration.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:__construct\\(\\) has parameter \\$db with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:addHistory\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:clearHistory\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:ensureTable\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:findMigrations\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:findNamespaceMigrations\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:force\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:getBatchHistory\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:getBatches\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:getCliMessages\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:getHistory\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:removeHistory\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, int\\<0, max\\> given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, int\\<0, max\\> given\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\MigrationRunner\\:\\:\\$cliMessages type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MigrationRunner.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\MySQLi\\\\Builder\\:\\:\\$supportedIgnoreStatements type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 11, - 'path' => __DIR__ . '/system/Database/MySQLi/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, int given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, array given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\MySQLi\\\\Connection\\:\\:\\$escapeChar is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$escapeChar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\MySQLi\\\\Connection\\:\\:error\\(\\) should be covariant with return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:_createTableAttributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:_processIndexes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:\\$createDatabaseStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$createDatabaseStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:\\$_quoted_table_options type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\MySQLi\\\\Forge\\:\\:\\$_unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$mysqli\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/MySQLi/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\PreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\PreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mysqli_result\\|false\\) of method CodeIgniter\\\\Database\\\\MySQLi\\\\PreparedQuery\\:\\:_getResult\\(\\) should be covariant with return type \\(object\\|resource\\|null\\) of method CodeIgniter\\\\Database\\\\BasePreparedQuery\\\\:\\:_getResult\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Result\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Result\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Result\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\MySQLi\\\\Utils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\MySQLi\\\\Utils\\:\\:\\$listDatabases is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$listDatabases\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\MySQLi\\\\Utils\\:\\:\\$optimizeTable is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$optimizeTable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/MySQLi/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Builder\\:\\:fieldsFromQuery\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Builder\\:\\:resetSelect\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\OCI8\\\\Connection of property CodeIgniter\\\\Database\\\\OCI8\\\\Builder\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\.\\.\\.\\$arrays of function array_map expects array, int\\|string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Builder\\:\\:\\$randomKeyword type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\OCI8\\\\Builder\\:\\:delete\\(\\) should be covariant with return type \\(bool\\|string\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:delete\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:bindParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:storedProcedure\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:\\$escapeChar is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$escapeChar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:\\$reservedIdentifiers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:\\$resetStmtId has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:\\$validDSNs has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\OCI8\\\\Connection\\:\\:error\\(\\) should be covariant with return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\ConnectionInterface\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:_attributeType\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type false of property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$createDatabaseStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$createDatabaseStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type false of property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$createTableIfStr is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$createTableIfStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type false of property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$dropDatabaseStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$dropDatabaseStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type false of property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$dropTableIfStr is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$dropTableIfStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$renameTableStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$renameTableStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$fkAllowActions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\OCI8\\\\Forge\\:\\:\\$unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\PreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\PreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\OCI8\\\\Connection of property CodeIgniter\\\\Database\\\\OCI8\\\\PreparedQuery\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection\\ of overridden property CodeIgniter\\\\Database\\\\BasePreparedQuery\\\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Result\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Result\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Result\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\OCI8\\\\Utils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\OCI8\\\\Utils\\:\\:\\$listDatabases is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$listDatabases\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/OCI8/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 7, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:replace\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\.\\.\\.\\$arrays of function array_map expects array, int\\|string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:\\$randomKeyword type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:\\$supportedIgnoreStatements type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Database\\\\BaseBuilder\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:join\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Database\\\\BaseBuilder\\)\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:join\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Database\\\\BaseBuilder\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:orderBy\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Database\\\\BaseBuilder\\)\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:orderBy\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:decrement\\(\\) should be covariant with return type \\(bool\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:decrement\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:delete\\(\\) should be covariant with return type \\(bool\\|string\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:delete\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:increment\\(\\) should be covariant with return type \\(bool\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:increment\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Builder\\:\\:replace\\(\\) should be covariant with return type \\(CodeIgniter\\\\Database\\\\BaseResult\\|CodeIgniter\\\\Database\\\\Query\\|string\\|false\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:replace\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:buildDSN\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:escape\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:escape\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:\\$escapeChar is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$escapeChar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:\\$connect_timeout has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:\\$options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:\\$service has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:\\$sslmode has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\Postgre\\\\Connection\\:\\:error\\(\\) should be covariant with return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_attributeType\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_attributeType\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_createTableAttributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\Postgre\\\\Connection of property CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Postgre\\\\Forge\\:\\:\\$_unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\PreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\PreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Result\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Result\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Result\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Postgre\\\\Utils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\Postgre\\\\Utils\\:\\:\\$listDatabases is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$listDatabases\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\Postgre\\\\Utils\\:\\:\\$optimizeTable is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$optimizeTable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Postgre/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Database\\\\PreparedQueryInterface\\:\\:execute\\(\\) has parameter \\$data with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/PreparedQueryInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\PreparedQueryInterface\\:\\:prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/PreparedQueryInterface.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Query\\:\\:compileBinds\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Query\\:\\:matchNamedBinds\\(\\) has parameter \\$binds with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Query\\:\\:matchSimpleBinds\\(\\) has parameter \\$binds with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Query\\:\\:setBinds\\(\\) has parameter \\$binds with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Query\\:\\:\\$binds type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Query.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\QueryInterface\\:\\:setError\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/QueryInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:freeResult\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getCustomResultObject\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getFirstRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getLastRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getNextRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getPreviousRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getResult\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getResultArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getResultObject\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getRowArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:getUnbufferedRow\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:setRow\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ResultInterface\\:\\:setRow\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/ResultInterface.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$schema\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 9, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:fieldsFromQuery\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:replace\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$selectOverride \\(bool\\) of method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:compileSelect\\(\\) should be contravariant with parameter \\$selectOverride \\(mixed\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:compileSelect\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:\\$randomKeyword type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Database\\\\BaseBuilder\\) of method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:maxMinAvgSum\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Database\\\\BaseBuilder\\)\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:maxMinAvgSum\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:delete\\(\\) should be covariant with return type \\(bool\\|string\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:delete\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Database\\\\SQLSRV\\\\Builder\\:\\:replace\\(\\) should be covariant with return type \\(CodeIgniter\\\\Database\\\\BaseResult\\|CodeIgniter\\\\Database\\\\Query\\|string\\|false\\) of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:replace\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/system/Database/SQLSRV/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Connection\\:\\:__construct\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Connection\\:\\:\\$escapeChar is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$escapeChar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\SQLSRV\\\\Connection\\:\\:error\\(\\) should be covariant with return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$schema\\.$#', - 'count' => 13, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_attributeType\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_attributeType\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_createTableAttributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:_processIndexes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type array of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$unsigned is not the same as PHPDoc type array\\|bool of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$unsigned\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$createDatabaseStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$createDatabaseStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$createTableIfStr is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$createTableIfStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$renameTableStr is not the same as PHPDoc type string\\|false of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$renameTableStr\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$fkAllowActions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLSRV\\\\Forge\\:\\:\\$unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\PreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\PreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\PreparedQuery\\:\\:parameterize\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\SQLSRV\\\\Connection of property CodeIgniter\\\\Database\\\\SQLSRV\\\\PreparedQuery\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection\\ of overridden property CodeIgniter\\\\Database\\\\BasePreparedQuery\\\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLSRV\\\\PreparedQuery\\:\\:\\$parameters type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Result\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Result\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Result\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLSRV\\\\Utils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Utils\\:\\:\\$listDatabases is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$listDatabases\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLSRV\\\\Utils\\:\\:\\$optimizeTable is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$optimizeTable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLSRV/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/SQLite3/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\.\\.\\.\\$arrays of function array_map expects array, int\\|string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLite3\\\\Builder\\:\\:\\$randomKeyword type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLite3\\\\Builder\\:\\:\\$supportedIgnoreStatements type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Builder.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLite3\\\\Connection\\:\\:\\$escapeChar is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:\\$escapeChar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\SQLite3\\\\Connection\\:\\:error\\(\\) should be covariant with return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Connection.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_alterTable\\(\\) has parameter \\$processedFields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_attributeAutoIncrement\\(\\) has parameter \\$field with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_attributeType\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_attributeType\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_processColumn\\(\\) has parameter \\$processedField with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:_processForeignKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\SQLite3\\\\Connection of property CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Database\\\\Forge\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\:\\:\\$_unsigned type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Forge.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\PreparedQuery\\:\\:_execute\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\PreparedQuery\\:\\:_prepare\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(SQLite3Result\\|false\\) of method CodeIgniter\\\\Database\\\\SQLite3\\\\PreparedQuery\\:\\:_getResult\\(\\) should be covariant with return type \\(object\\|resource\\|null\\) of method CodeIgniter\\\\Database\\\\BasePreparedQuery\\\\:\\:_getResult\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/PreparedQuery.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Result\\:\\:fetchAssoc\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Result\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Result.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Result\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Result.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:addForeignKey\\(\\) has parameter \\$foreignKeys with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:addPrimaryKey\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:copyData\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:dropIndexes\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:formatFields\\(\\) has parameter \\$fields with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:formatFields\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:\\$foreignKeys type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\SQLite3\\\\Table\\:\\:\\$keys type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\SQLite3\\\\Utils\\:\\:_backup\\(\\) has parameter \\$prefs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\SQLite3\\\\Utils\\:\\:\\$optimizeTable is not the same as PHPDoc type bool\\|string of overridden property CodeIgniter\\\\Database\\\\BaseUtils\\:\\:\\$optimizeTable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/SQLite3/Utils.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Database\\\\Seeder\\:\\:call\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Database/Seeder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:collectVars\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskData\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskData\\(\\) has parameter \\$keysToMask with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskSensitiveData\\(\\) has parameter \\$keysToMask with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskSensitiveData\\(\\) has parameter \\$trace with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\BaseExceptionHandler\\:\\:maskSensitiveData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/BaseExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandler\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/ExceptionHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:collectVars\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:determineCodes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskData\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskData\\(\\) has parameter \\$keysToMask with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskSensitiveData\\(\\) has parameter \\$keysToMask with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskSensitiveData\\(\\) has parameter \\$trace with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:maskSensitiveData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:renderBacktrace\\(\\) has parameter \\$backtrace with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Exceptions\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Exceptions.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Iterator\\:\\:\\$results type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Iterator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Iterator\\:\\:\\$tests type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Iterator.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/Debug/Timer.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Timer\\:\\:getTimers\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Timer.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Timer\\:\\:\\$timers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Timer.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:collectTimelineData\\(\\) has parameter \\$collectors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:collectTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:collectVarData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:renderTimeline\\(\\) has parameter \\$collectors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:renderTimeline\\(\\) has parameter \\$styles with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:renderTimelineRecursive\\(\\) has parameter \\$rows with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:renderTimelineRecursive\\(\\) has parameter \\$styles with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:structureTimelineData\\(\\) has parameter \\$elements with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\:\\:structureTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\BaseCollector\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/BaseCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\BaseCollector\\:\\:formatTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/BaseCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\BaseCollector\\:\\:getAsArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/BaseCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\BaseCollector\\:\\:getVarData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/BaseCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\BaseCollector\\:\\:timelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/BaseCollector.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Config\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Config.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Database\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Database\\:\\:formatTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Database\\:\\:\\$connections type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Database\\:\\:\\$queries type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Database.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Database.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Events\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Events\\:\\:formatTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Files\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Files.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\History\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/History.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\History\\:\\:\\$files type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/History.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Logs.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Logs\\:\\:collectLogs\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Logs.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Logs\\:\\:display\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Logs.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Logs\\:\\:\\$data type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Logs.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Log\\\\Logger\\:\\:\\$logCache \\(array\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Logs.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Timers\\:\\:formatTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Timers.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\RendererInterface\\:\\:getData\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Views.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\RendererInterface\\:\\:getPerformanceData\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Views.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Views\\:\\:formatTimelineData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Views.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Views\\:\\:getVarData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Views.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\Toolbar\\\\Collectors\\\\Views\\:\\:\\$views type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Debug/Toolbar/Collectors/Views.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_ADDR\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_NAME\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 12, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:cleanEmail\\(\\) has parameter \\$email with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:cleanEmail\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:initialize\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:printDebugger\\(\\) has parameter \\$include with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:setArchiveValues\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:setTo\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:stringToArray\\(\\) has parameter \\$email with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:stringToArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\Email\\:\\:validateEmail\\(\\) has parameter \\$email with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, int given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, string given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$BCCArray type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$CCArray type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$archive type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$attachments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$bitDepths type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$debugMessage type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$headers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$priorities type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$protocols type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$recipients type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Email\\\\Email\\:\\:\\$tmpArchive type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: isset.property - 'message' => '#^Static property CodeIgniter\\\\Email\\\\Email\\:\\:\\$func_overload \\(bool\\) in isset\\(\\) is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Email/Email.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:decrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/EncrypterInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:encrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/EncrypterInterface.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Encryption/Encryption.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Encryption\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Encryption.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Encryption\\\\Encryption\\:\\:\\$drivers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Encryption.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\BaseHandler\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Encryption/Handlers/OpenSSLHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\OpenSSLHandler\\:\\:decrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/OpenSSLHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\OpenSSLHandler\\:\\:encrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/OpenSSLHandler.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, array\\|string\\|null given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Encryption/Handlers/OpenSSLHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Encryption\\\\Handlers\\\\OpenSSLHandler\\:\\:\\$digestSize type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/OpenSSLHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Encryption/Handlers/SodiumHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\SodiumHandler\\:\\:decrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/SodiumHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\SodiumHandler\\:\\:encrypt\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/SodiumHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Encryption\\\\Handlers\\\\SodiumHandler\\:\\:parseParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Encryption/Handlers/SodiumHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ArrayCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ArrayCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ArrayCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ArrayCast\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ArrayCast\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ArrayCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BaseCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BooleanCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BooleanCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\BooleanCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/BooleanCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CSVCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CSVCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CSVCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CSVCast\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CSVCast\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CSVCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/CastInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\DatetimeCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/DatetimeCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\DatetimeCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/DatetimeCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\FloatCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/FloatCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\FloatCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/FloatCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(bool\\|int\\|string\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(bool\\|int\\|string\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(int\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(int\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\IntBoolCast\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntBoolCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\IntegerCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntegerCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\IntegerCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/IntegerCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\JsonCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\JsonCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\JsonCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\JsonCast\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\JsonCast\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/JsonCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ObjectCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ObjectCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\ObjectCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/ObjectCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\StringCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/StringCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\StringCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/StringCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\TimestampCast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/TimestampCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\TimestampCast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/TimestampCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\TimestampCast\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/TimestampCast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\URICast\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/URICast.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Cast\\\\URICast\\:\\:get\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Cast/URICast.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:__set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:castAs\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:fill\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:injectRawData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:setAttributes\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Entity\\\\Entity\\:\\:toRawArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Entity/Entity.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.configArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(\'Config\\\\\\\\Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Events\\\\Events\\:\\:listeners\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Events\\\\Events\\:\\:on\\(\\) has parameter \\$callback with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Events\\\\Events\\:\\:removeListener\\(\\) has parameter \\$listener with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Events\\\\Events\\:\\:setFiles\\(\\) has parameter \\$files with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Events\\\\Events\\:\\:\\$listeners type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Events/Events.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Exceptions\\\\PageNotFoundException\\:\\:lang\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Exceptions/PageNotFoundException.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type int of property CodeIgniter\\\\Exceptions\\\\PageNotFoundException\\:\\:\\$code is not the same as PHPDoc type mixed of overridden property Exception\\:\\:\\$code\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Exceptions/PageNotFoundException.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Files/File.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Files\\\\File\\:\\:\\$size \\(int\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Files/File.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Files/File.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.configArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(\'Config\\\\\\\\Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:checkExcept\\(\\) has parameter \\$paths with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:checkPseudoRegex\\(\\) has parameter \\$paths with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:enableFilters\\(\\) has parameter \\$names with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:getFilters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:getFiltersClass\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:getRequiredFilters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:pathApplies\\(\\) has parameter \\$paths with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:registerArguments\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:runAfter\\(\\) has parameter \\$filterClasses with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:runBefore\\(\\) has parameter \\$filterClasses with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\Filters\\:\\:setToolbarToLast\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, array\\\\>\\> given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Filters\\\\Filters\\:\\:\\$filters type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Filters\\\\Filters\\:\\:\\$filtersClass type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\ForceHTTPS\\:\\:after\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/ForceHTTPS.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\ForceHTTPS\\:\\:before\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/ForceHTTPS.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidChars\\:\\:checkControl\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/InvalidChars.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidChars\\:\\:checkControl\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/InvalidChars.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidChars\\:\\:checkEncoding\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/InvalidChars.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidChars\\:\\:checkEncoding\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/InvalidChars.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\PageCache\\:\\:after\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/PageCache.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\PageCache\\:\\:before\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/PageCache.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\PerformanceMetrics\\:\\:after\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/PerformanceMetrics.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\PerformanceMetrics\\:\\:before\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Filters/PerformanceMetrics.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\FormatterInterface\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Format/FormatterInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\JSONFormatter\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Format/JSONFormatter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\XMLFormatter\\:\\:arrayToXML\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Format/XMLFormatter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\XMLFormatter\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Format/XMLFormatter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getArgs\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getCookie\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getCookie\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGet\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGet\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGet\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGetPost\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGetPost\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getGetPost\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getOptions\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPost\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPost\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPost\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPostGet\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPostGet\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getPostGet\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:getSegments\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:returnNullOrEmptyArray\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:returnNullOrEmptyArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:\\$args type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:\\$options type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CLIRequest\\:\\:\\$segments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CLIRequest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 10, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyBody\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyBody\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyMethod\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyMethod\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyRequestHeaders\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:applyRequestHeaders\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:delete\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:get\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:head\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:options\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:parseOptions\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:patch\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:post\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:put\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:request\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:sendRequest\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setCURLOptions\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setCURLOptions\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setCURLOptions\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setForm\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setJSON\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:setResponseHeaders\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:\\$defaultConfig type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:\\$defaultOptions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\CURLRequest\\:\\:\\$redirectDefaults type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/CURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addBaseURI\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addChildSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addConnectSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addFontSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addFormAction\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addFrameAncestor\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addFrameSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addImageSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addManifestSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addMediaSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addObjectSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addPluginType\\(\\) has parameter \\$mime with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addSandbox\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addScriptSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addStyleSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:addToHeader\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:setDefaultSrc\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$baseURI type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$childSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$connectSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$defaultSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$fontSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$formAction type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$frameAncestors type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$frameSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$imageSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$manifestSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$mediaSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$nonces type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$objectSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$pluginTypes type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$reportOnlyHeaders type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$sandbox type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$scriptSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$styleSrc type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ContentSecurityPolicy\\:\\:\\$tempHeaders type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ContentSecurityPolicy.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_USER_AGENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/DownloadResponse.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\DownloadResponse\\) of method CodeIgniter\\\\HTTP\\\\DownloadResponse\\:\\:sendBody\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\HTTP\\\\Response\\)\\) of method CodeIgniter\\\\HTTP\\\\Response\\:\\:sendBody\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/DownloadResponse.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\DownloadResponse\\) of method CodeIgniter\\\\HTTP\\\\DownloadResponse\\:\\:sendBody\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\)\\) of method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:sendBody\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/DownloadResponse.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\) of method CodeIgniter\\\\HTTP\\\\DownloadResponse\\:\\:setContentType\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\HTTP\\\\Response\\)\\) of method CodeIgniter\\\\HTTP\\\\Response\\:\\:setContentType\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/DownloadResponse.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\) of method CodeIgniter\\\\HTTP\\\\DownloadResponse\\:\\:setContentType\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\)\\) of method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:setContentType\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/DownloadResponse.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\Exceptions\\\\HTTPException\\) of method CodeIgniter\\\\HTTP\\\\Exceptions\\\\HTTPException\\:\\:forInvalidFile\\(\\) should be covariant with return type \\(static\\(CodeIgniter\\\\Exceptions\\\\FrameworkException\\)\\) of method CodeIgniter\\\\Exceptions\\\\FrameworkException\\:\\:forInvalidFile\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Exceptions/HTTPException.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type int of property CodeIgniter\\\\HTTP\\\\Exceptions\\\\RedirectException\\:\\:\\$code is not the same as PHPDoc type mixed of overridden property Exception\\:\\:\\$code\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Exceptions/RedirectException.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Exceptions/RedirectException.php', -]; -$ignoreErrors[] = [ - // identifier: function.alreadyNarrowedType - 'message' => '#^Call to function is_array\\(\\) with array will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:all\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:createFileObject\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:fixFilesArray\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:fixFilesArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:getValueDotNotationSyntax\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:getValueDotNotationSyntax\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, array given on the right side\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Files\\\\FileCollection\\:\\:\\$files type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/FileCollection.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.expr - 'message' => '#^Expression on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/UploadedFile.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\HTTP\\\\Files\\\\UploadedFile\\:\\:\\$originalMimeType is not the same as PHPDoc type string\\|null of overridden property CodeIgniter\\\\Files\\\\File\\:\\:\\$originalMimeType\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/UploadedFile.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Files\\\\UploadedFile\\:\\:\\$error \\(int\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Files/UploadedFile.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\) of method CodeIgniter\\\\HTTP\\\\Files\\\\UploadedFile\\:\\:move\\(\\) should be compatible with return type \\(CodeIgniter\\\\Files\\\\File\\) of method CodeIgniter\\\\Files\\\\File\\:\\:move\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/UploadedFile.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Files/UploadedFile.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTPS\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'QUERY_STRING\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REQUEST_URI\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SCRIPT_NAME\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset array\\|string directly on \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getCookie\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getCookie\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getCookie\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getFileMultiple\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getFiles\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGet\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGet\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGet\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGetPost\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGetPost\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getGetPost\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getJSON\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getJsonVar\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getJsonVar\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getJsonVar\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getOldInput\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPost\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPost\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPost\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPostGet\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPostGet\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getPostGet\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getRawInput\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getRawInputVar\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getRawInputVar\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getRawInputVar\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getVar\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getVar\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:getVar\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:negotiate\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:setValidLocales\\(\\) has parameter \\$locales with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\HTTP\\\\URI of property CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:\\$uri is not the same as PHPDoc type CodeIgniter\\\\HTTP\\\\URI\\|null of overridden property CodeIgniter\\\\HTTP\\\\OutgoingRequest\\:\\:\\$uri\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:\\$oldInput type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\IncomingRequest\\:\\:\\$validLocales type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/IncomingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'CONTENT_TYPE\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \\(int\\|string\\) directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Message\\:\\:getHeader\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Message\\:\\:setHeader\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Message\\:\\:\\$headerMap type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Message\\:\\:\\$protocolVersion \\(string\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Message\\:\\:\\$validProtocolVersions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Message.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\MessageInterface\\:\\:setHeader\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/MessageInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:charset\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:encoding\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:getBestMatch\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:language\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:match\\(\\) has parameter \\$acceptable with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchLocales\\(\\) has parameter \\$acceptable with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchLocales\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchParameters\\(\\) has parameter \\$acceptable with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchParameters\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchTypes\\(\\) has parameter \\$acceptable with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:matchTypes\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:media\\(\\) has parameter \\$supported with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Negotiate\\:\\:parseHeader\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Negotiate.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\OutgoingRequest\\:\\:__construct\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/OutgoingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, int\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/OutgoingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\HTTP\\\\URI\\|null\\) of method CodeIgniter\\\\HTTP\\\\OutgoingRequest\\:\\:getUri\\(\\) should be covariant with return type \\(CodeIgniter\\\\HTTP\\\\URI\\) of method CodeIgniter\\\\HTTP\\\\OutgoingRequestInterface\\:\\:getUri\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/OutgoingRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\RedirectResponse\\:\\:route\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RedirectResponse.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\RedirectResponse\\:\\:with\\(\\) has parameter \\$message with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RedirectResponse.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, array\\ given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RedirectResponse.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.variable - 'message' => '#^Variable \\$_GET on left side of \\?\\? always exists and is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RedirectResponse.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.variable - 'message' => '#^Variable \\$_POST on left side of \\?\\? always exists and is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RedirectResponse.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:fetchGlobal\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:fetchGlobal\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:fetchGlobal\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:getEnv\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:getEnv\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:getServer\\(\\) has parameter \\$flags with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Request\\:\\:getServer\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Request\\:\\:\\$globals type has no value type specified in iterable type array\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/HTTP/Request.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\RequestInterface\\:\\:getServer\\(\\) has parameter \\$index with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/RequestInterface.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REQUEST_METHOD\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_PROTOCOL\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_SOFTWARE\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:doSetCookie\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:doSetRawCookie\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:formatBody\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:setCache\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:setCookie\\(\\) has parameter \\$name with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:setJSON\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\Response\\:\\:setXML\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, string\\|null given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, string\\|null given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string\\|null given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\Response\\:\\:\\$statusCodes type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/system/HTTP/Response.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:setCache\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ResponseInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:setCookie\\(\\) has parameter \\$name with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ResponseInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:setJSON\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ResponseInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:setXML\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/ResponseInterface.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:applyParts\\(\\) has parameter \\$parts with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:baseUrl\\(\\) has parameter \\$relativePath with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:convertToSegments\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:parseRelativePath\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:siteUrl\\(\\) has parameter \\$relativePath with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:stringifyRelativePath\\(\\) has parameter \\$relativePath with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:\\$baseSegments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\SiteURI\\:\\:\\$segments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: notIdentical.alwaysTrue - 'message' => '#^Strict comparison using \\!\\=\\= between mixed and null will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/SiteURI.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 10, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:applyParts\\(\\) has parameter \\$parts with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:changeSchemeAndPath\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:getQuery\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:getSegments\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:parseStr\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URI\\:\\:setQueryArray\\(\\) has parameter \\$query with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$defaultPorts type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$fragment \\(string\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$host \\(string\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$path \\(string\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$query type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\URI\\:\\:\\$segments type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: notIdentical.alwaysTrue - 'message' => '#^Strict comparison using \\!\\=\\= between mixed and null will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HTTP/URI.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_REFERER\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/HTTP/UserAgent.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_USER_AGENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/UserAgent.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/HTTP/UserAgent.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\ given on the right side\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/HTTP/UserAgent.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arrayAttachIndexedValue\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arrayAttachIndexedValue\\(\\) has parameter \\$result with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arrayAttachIndexedValue\\(\\) has parameter \\$row with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arrayAttachIndexedValue\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arraySearchDot\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arraySearchDot\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:arraySearchDot\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:dotKeyExists\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:dotSearch\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:dotSearch\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:groupBy\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:groupBy\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:groupBy\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:recursiveCount\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:recursiveDiff\\(\\) has parameter \\$compareWith with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:recursiveDiff\\(\\) has parameter \\$original with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelper\\:\\:recursiveDiff\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/Array/ArrayHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_deep_search\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_deep_search\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_flatten_with_dots\\(\\) has parameter \\$array with no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_flatten_with_dots\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_group_by\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_group_by\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_group_by\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_sort_by_multiple_keys\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function array_sort_by_multiple_keys\\(\\) has parameter \\$sortColumns with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function dot_array_search\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function dot_array_search\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/array_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function get_cookie\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/cookie_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function set_cookie\\(\\) has parameter \\$name with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/cookie_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function directory_map\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function get_dir_file_info\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function get_file_info\\(\\) has parameter \\$returnedValues with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function get_file_info\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function get_filenames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightAlwaysTrue - 'message' => '#^Right side of && is always true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$result might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/filesystem_helper.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_button\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_button\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_checkbox\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_checkbox\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_datalist\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_dropdown\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_dropdown\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_dropdown\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_dropdown\\(\\) has parameter \\$selected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_fieldset\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_hidden\\(\\) has parameter \\$name with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_hidden\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_input\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_input\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_label\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_multiselect\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_multiselect\\(\\) has parameter \\$name with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_multiselect\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_multiselect\\(\\) has parameter \\$selected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_open\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_open\\(\\) has parameter \\$hidden with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_open_multipart\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_open_multipart\\(\\) has parameter \\$hidden with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_password\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_password\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_radio\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_radio\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_reset\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_reset\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_submit\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_submit\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_textarea\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_textarea\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_upload\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function form_upload\\(\\) has parameter \\$extra with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function parse_form_attributes\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function parse_form_attributes\\(\\) has parameter \\$default with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, int\\<0, max\\> given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/form_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function _list\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function _list\\(\\) has parameter \\$list with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function _media\\(\\) has parameter \\$tracks with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function _media\\(\\) has parameter \\$types with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function audio\\(\\) has parameter \\$src with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function audio\\(\\) has parameter \\$tracks with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function img\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function img\\(\\) has parameter \\$src with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function object\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function ol\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function ol\\(\\) has parameter \\$list with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function script_tag\\(\\) has parameter \\$src with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function ul\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function ul\\(\\) has parameter \\$list with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function video\\(\\) has parameter \\$src with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function video\\(\\) has parameter \\$tracks with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/html_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function d\\(\\) has parameter \\$vars with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/kint_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function dd\\(\\) has parameter \\$vars with no value type specified in iterable type array\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Helpers/kint_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function format_number\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/number_helper.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Helpers/test_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function fake\\(\\) has parameter \\$overrides with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/test_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function fake\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/test_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function strip_slashes\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/text_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function strip_slashes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/text_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function word_censor\\(\\) has parameter \\$censored with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/text_helper.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/text_helper.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function anchor\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function anchor\\(\\) has parameter \\$uri with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function anchor_popup\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function base_url\\(\\) has parameter \\$relativePath with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function mailto\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function safe_mailto\\(\\) has parameter \\$attributes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Function site_url\\(\\) has parameter \\$relativePath with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: variable.implicitArray - 'message' => '#^Implicit array creation is not allowed \\- variable \\$atts might not exist\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$atts might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Helpers/url_helper.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Honeypot/Honeypot.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HotReloader\\\\DirectoryHasher\\:\\:hashApp\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HotReloader/DirectoryHasher.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HotReloader\\\\HotReloader\\:\\:sendEvent\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HotReloader/HotReloader.php', -]; -$ignoreErrors[] = [ - // identifier: booleanOr.rightNotBoolean - 'message' => '#^Only booleans are allowed in \\|\\|, int given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HotReloader/HotReloader.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HotReloader\\\\IteratorFilter\\:\\:\\$watchedExtensions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/HotReloader/IteratorFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\I18n\\\\Time\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/Time.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\I18n\\\\Time\\) of method CodeIgniter\\\\I18n\\\\Time\\:\\:setTimestamp\\(\\) should be covariant with return type \\(static\\(DateTimeImmutable\\)\\) of method DateTimeImmutable\\:\\:setTimestamp\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/Time.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\I18n\\\\Time\\) of method CodeIgniter\\\\I18n\\\\Time\\:\\:setTimezone\\(\\) should be covariant with return type \\(static\\(DateTimeImmutable\\)\\) of method DateTimeImmutable\\:\\:setTimezone\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/Time.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/I18n/Time.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\I18n\\\\TimeLegacy\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/TimeLegacy.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\I18n\\\\TimeLegacy\\) of method CodeIgniter\\\\I18n\\\\TimeLegacy\\:\\:setTimestamp\\(\\) should be covariant with return type \\(static\\(DateTime\\)\\) of method DateTime\\:\\:setTimestamp\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/TimeLegacy.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\I18n\\\\TimeLegacy\\) of method CodeIgniter\\\\I18n\\\\TimeLegacy\\:\\:setTimezone\\(\\) should be covariant with return type \\(static\\(DateTime\\)\\) of method DateTime\\:\\:setTimezone\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/I18n/TimeLegacy.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/I18n/TimeLegacy.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:__call\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: return.missing - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:__call\\(\\) should return mixed but return statement is missing\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:_text\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:calcAspectRatio\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:calcCropCoords\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:text\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$image \\(CodeIgniter\\\\Images\\\\Image\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$supportTransparency type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$textDefaults type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:fit\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Images\\\\ImageHandlerInterface\\)\\) of method CodeIgniter\\\\Images\\\\ImageHandlerInterface\\:\\:fit\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:resize\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Images\\\\ImageHandlerInterface\\)\\) of method CodeIgniter\\\\Images\\\\ImageHandlerInterface\\:\\:resize\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: greaterOrEqual.invalid - 'message' => '#^Comparison operation "\\>\\=" between \\(array\\|float\\|int\\) and 0 results in an error\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 8, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\:\\:_text\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\:\\:process\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string\\|null of property CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\:\\:\\$resource is not the same as PHPDoc type resource\\|null of overridden property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$resource\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$height \\(int\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:\\$width \\(int\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\:\\:_resize\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\)\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:_resize\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\|CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\ImageMagickHandler\\:\\:_crop\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\)\\) of method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:_crop\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Handlers/ImageMagickHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Image.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\Image\\:\\:getProperties\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/Image.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Images\\\\ImageHandlerInterface\\:\\:text\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Images/ImageHandlerInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:formatMessage\\(\\) has parameter \\$message with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:formatMessage\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:getLine\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:getTranslationOutput\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:load\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:parseLine\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\Language\\:\\:requireFile\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Language\\\\Language\\:\\:\\$language type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Language\\\\Language\\:\\:\\$loadedFiles type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Language/Language.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\BaseHandler\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Handlers\\\\BaseHandler\\:\\:\\$handles type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/ChromeLoggerHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:format\\(\\) has parameter \\$object with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/ChromeLoggerHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:format\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/ChromeLoggerHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:\\$json type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/ChromeLoggerHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:\\$levels type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/ChromeLoggerHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Log/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\FileHandler\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Logger\\:\\:determineFile\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Logger\\:\\:interpolate\\(\\) has parameter \\$context with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$level \\(string\\) of method CodeIgniter\\\\Log\\\\Logger\\:\\:log\\(\\) should be contravariant with parameter \\$level \\(mixed\\) of method Psr\\\\Log\\\\LoggerInterface\\:\\:log\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Logger\\:\\:\\$handlers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Logger\\:\\:\\$logCache type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Log\\\\Logger\\:\\:\\$loggableLevels type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Log/Logger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:__call\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:__call\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:__get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:chunk\\(\\) has parameter \\$userFunc with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doDelete\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doFind\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doInsertBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doProtectFieldsForInsert\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doUpdate\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:doUpdateBatch\\(\\) has parameter \\$set with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:getIdValue\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:set\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:shouldUpdate\\(\\) has parameter \\$row with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Model\\:\\:update\\(\\) has parameter \\$id with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, array given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.rightNotBoolean - 'message' => '#^Only booleans are allowed in &&, string given on the right side\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, string\\|null given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, array\\|int\\|string\\|null given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Model\\:\\:\\$escape type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Model\\:\\:__call\\(\\) should be covariant with return type \\(\\$this\\(CodeIgniter\\\\BaseModel\\)\\|null\\) of method CodeIgniter\\\\BaseModel\\:\\:__call\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Model.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Modules\\\\Modules\\:\\:__set_state\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Modules/Modules.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset mixed directly on \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Pager\\\\Pager\\:\\:getDetails\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Pager\\\\Pager\\:\\:only\\(\\) has parameter \\$queries with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Pager\\\\Pager\\:\\:\\$groups type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Pager\\\\Pager\\:\\:\\$segment type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/Pager.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Pager\\\\PagerInterface\\:\\:getDetails\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/PagerInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Pager\\\\PagerRenderer\\:\\:__construct\\(\\) has parameter \\$details with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Pager/PagerRenderer.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Publisher\\\\ContentReplacer\\:\\:replace\\(\\) has parameter \\$replaces with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Publisher/ContentReplacer.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Publisher\\\\Publisher\\:\\:replace\\(\\) has parameter \\$replaces with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Publisher/Publisher.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.modelArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(class\\-string\\) passed to function model does not extend CodeIgniter\\\\\\\\Model\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/BaseResource.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/system/RESTful/BaseResource.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, object\\|string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/BaseResource.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/RESTful/ResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouter\\:\\:getRoute\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouter\\:\\:scanControllers\\(\\) has parameter \\$segments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouter\\:\\:scanControllers\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^PHPDoc tag @var for variable \\$params has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouterImproved\\:\\:createSegments\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouterImproved.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouterImproved\\:\\:getRoute\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouterImproved.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\AutoRouterImproved\\:\\:\\$moduleRoutes type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouterImproved.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouterInterface\\:\\:getRoute\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/AutoRouterInterface.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type int of property CodeIgniter\\\\Router\\\\Exceptions\\\\RedirectException\\:\\:\\$code is not the same as PHPDoc type mixed of overridden property Exception\\:\\:\\$code\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Exceptions/RedirectException.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:addPlaceholder\\(\\) has parameter \\$placeholder with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:buildReverseRoute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:cli\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:cli\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:create\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:create\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:delete\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:delete\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:environment\\(\\) has parameter \\$callback with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:fillRouteParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:get\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:get\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:getRoutes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:group\\(\\) has parameter \\$params with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:group\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:head\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:head\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:map\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:map\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:match\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:match\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:match\\(\\) has parameter \\$verbs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:options\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:options\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:patch\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:patch\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:post\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:post\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:presenter\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:processArrayCallableSyntax\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:put\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:put\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:resource\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:set404Override\\(\\) has parameter \\$callable with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:view\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: booleanAnd.leftNotBoolean - 'message' => '#^Only booleans are allowed in &&, array\\ given on the left side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.condNotBoolean - 'message' => '#^Only booleans are allowed in a ternary operator condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\RouteCollection\\:\\:\\$currentOptions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\RouteCollection\\:\\:\\$routeFiles type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\RouteCollection\\:\\:\\$routes type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\RouteCollection\\:\\:\\$routesNames type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\RouteCollection\\:\\:\\$routesOptions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:add\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:add\\(\\) has parameter \\$to with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:addPlaceholder\\(\\) has parameter \\$placeholder with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getRoutes\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:set404Override\\(\\) has parameter \\$callable with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouteCollectionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REQUEST_METHOD\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getDefaultNamespace\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getFiltersForRoute\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getRegisteredControllers\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getRoutesOptions\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:isFiltered\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:setHTTPVerb\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.expr - 'message' => '#^Expression on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:get404Override\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:getMatchedRoute\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:getMatchedRouteOptions\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:params\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:replaceBackReferences\\(\\) has parameter \\$matches with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:scanControllers\\(\\) has parameter \\$segments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:scanControllers\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:setMatchedRoute\\(\\) has parameter \\$handler with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:setRequest\\(\\) has parameter \\$segments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:validateRequest\\(\\) has parameter \\$segments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\Router\\:\\:validateRequest\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\Router\\:\\:\\$matchedRoute type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\Router\\:\\:\\$matchedRouteOptions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Router\\\\Router\\:\\:\\$params type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/Router.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouterInterface\\:\\:params\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Router/RouterInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:checkIni\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForCli\\(\\) has parameter \\$output with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForCli\\(\\) has parameter \\$tbody with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForCli\\(\\) has parameter \\$thead with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForWeb\\(\\) has parameter \\$output with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForWeb\\(\\) has parameter \\$tbody with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Security\\\\CheckPhpIni\\:\\:outputForWeb\\(\\) has parameter \\$thead with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Security/CheckPhpIni.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forEmptySavepath\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forInvalidSameSiteSetting\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forInvalidSavePath\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forInvalidSavePathFormat\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forMissingDatabaseTable\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Exceptions\\\\SessionException\\:\\:forWriteProtectedSavePath\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Exceptions/SessionException.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Session\\\\Handlers\\\\ArrayHandler\\:\\:\\$cache has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/ArrayHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Session\\\\Handlers\\\\BaseHandler\\:\\:\\$savePath type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/BaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\PostgreHandler\\:\\:setSelect\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/Database/PostgreHandler.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, mixed given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Session/Handlers/Database/PostgreHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Session/Handlers/DatabaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\DatabaseHandler\\:\\:setSelect\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/DatabaseHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\FileHandler\\:\\:configureSessionIDRegex\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Session\\\\Handlers\\\\FileHandler\\:\\:\\$savePath is not the same as PHPDoc type array\\|string of overridden property CodeIgniter\\\\Session\\\\Handlers\\\\BaseHandler\\:\\:\\$savePath\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$written might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/FileHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, mixed given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Handlers/MemcachedHandler.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Session/Handlers/RedisHandler.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_X_REQUESTED_WITH\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:__set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:configure\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:configureSidLength\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:destroy\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:getFlashKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:getFlashdata\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:getTempKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:getTempdata\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:initVars\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:keepFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:keepFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:markAsFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:markAsTempdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:push\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:push\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:regenerate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:remove\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:remove\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:removeTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:set\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:set\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setCookie\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setFlashdata\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setFlashdata\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setSaveHandler\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setTempdata\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:setTempdata\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:startSession\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:stop\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:unmarkFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:unmarkFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:unmarkTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Session\\:\\:unmarkTempdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\) of method CodeIgniter\\\\Session\\\\Session\\:\\:markAsFlashdata\\(\\) should be covariant with return type \\(false\\) of method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:markAsFlashdata\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/Session.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:destroy\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:getFlashKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:getFlashdata\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:getTempKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:getTempdata\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:keepFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:keepFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:markAsFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:markAsTempdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:regenerate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:remove\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:remove\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:removeTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:set\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:set\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:set\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setFlashdata\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setFlashdata\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setTempdata\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:setTempdata\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:unmarkFlashdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:unmarkFlashdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:unmarkTempdata\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionInterface\\:\\:unmarkTempdata\\(\\) has parameter \\$key with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Session/SessionInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Superglobals\\:\\:__construct\\(\\) has parameter \\$get with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Superglobals\\:\\:__construct\\(\\) has parameter \\$server with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Superglobals\\:\\:get\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Superglobals\\:\\:setGetArray\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Superglobals\\:\\:\\$get type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Superglobals\\:\\:\\$server type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Superglobals.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:assertCloseEnough\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:mockCache\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:mockEmail\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:mockSession\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:resetFactories\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:resetServices\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, CodeIgniter\\\\CodeIgniter given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$headers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$insertCache type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$namespace type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: property.defaultValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$seed \\(array\\\\>\\|class\\-string\\\\) does not accept default value of type string\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$session type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$traits type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/CIUnitTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Constraints\\\\SeeInDatabase\\:\\:__construct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Constraints/SeeInDatabase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Constraints\\\\SeeInDatabase\\:\\:\\$data type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Constraints/SeeInDatabase.php', -]; -$ignoreErrors[] = [ - // identifier: function.alreadyNarrowedType - 'message' => '#^Call to function is_array\\(\\) with non\\-empty\\-array will always evaluate to true\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/DOMParser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\DOMParser\\:\\:doXPath\\(\\) has parameter \\$paths with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/DOMParser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:__construct\\(\\) has parameter \\$formatters with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:create\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:createMock\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:getFormatters\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:getOverrides\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:make\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:makeArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:resetCounts\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:setFormatters\\(\\) has parameter \\$formatters with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Fabricator\\:\\:setOverrides\\(\\) has parameter \\$overrides with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.modelArgumentType - 'message' => '#^Parameter \\#1 \\$name of function model expects a valid class string, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Fabricator\\:\\:\\$dateFields type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Fabricator\\:\\:\\$formatters type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Fabricator\\:\\:\\$overrides type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Fabricator\\:\\:\\$tableCounts type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Fabricator\\:\\:\\$tempOverrides type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Fabricator.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockBuilder\\:\\:\\$supportedIgnoreStatements type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockBuilder.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockCLIConfig\\:\\:\\$CSRFExcludeURIs has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCLIConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:getBaseURI\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:getDelay\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:sendRequest\\(\\) has parameter \\$curlOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:setOutput\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:setOutput\\(\\) has parameter \\$output with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:\\$curl_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockCURLRequest\\:\\:\\$output has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCURLRequest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockCache\\:\\:getMetaData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockCache.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Test/Mock/MockCache.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$insert_id on object\\|resource\\|false\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(array\\{code\\: int\\|string\\|null, message\\: string\\|null\\}\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:error\\(\\) should be covariant with return type \\(array\\\\) of method CodeIgniter\\\\Database\\\\ConnectionInterface\\\\:\\:error\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\|CodeIgniter\\\\Database\\\\BaseResult\\|CodeIgniter\\\\Database\\\\Query\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:query\\(\\) should be covariant with return type \\(bool\\|CodeIgniter\\\\Database\\\\BaseResult\\\\|CodeIgniter\\\\Database\\\\Query\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:query\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\|CodeIgniter\\\\Database\\\\BaseResult\\|CodeIgniter\\\\Database\\\\Query\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:query\\(\\) should be covariant with return type \\(bool\\|CodeIgniter\\\\Database\\\\BaseResult\\\\|CodeIgniter\\\\Database\\\\Query\\) of method CodeIgniter\\\\Database\\\\ConnectionInterface\\\\:\\:query\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(bool\\|object\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:execute\\(\\) should be covariant with return type \\(object\\|resource\\|false\\) of method CodeIgniter\\\\Database\\\\BaseConnection\\\\:\\:execute\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:connect\\(\\) should be covariant with return type \\(object\\|resource\\|false\\) of method CodeIgniter\\\\Database\\\\ConnectionInterface\\\\:\\:connect\\(\\)$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Test/Mock/MockConnection.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockEvents\\:\\:getEventsFile\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockEvents.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockEvents\\:\\:getListeners\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockEvents.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockEvents\\:\\:getSimulate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockEvents.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockEvents\\:\\:unInitialize\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockEvents.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockFileLogger\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockFileLogger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockFileLogger\\:\\:\\$destination has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockFileLogger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockInputOutput\\:\\:getOutputs\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockInputOutput.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockLanguage\\:\\:disableIntlSupport\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLanguage.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockLanguage\\:\\:requireFile\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLanguage.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockLanguage\\:\\:setData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLanguage.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockLogger\\:\\:\\$dateFormat has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLogger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockLogger\\:\\:\\$handlers has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLogger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockLogger\\:\\:\\$threshold has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockLogger.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourceController\\:\\:getFormat\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourceController\\:\\:getModel\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourceController\\:\\:getModelName\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourceController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:getFormat\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:getModel\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:getModelName\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResourcePresenter\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResourcePresenter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResponse\\:\\:getPretend\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResponse.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResponse\\:\\:misbehave\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResponse.php', -]; -$ignoreErrors[] = [ - // identifier: return.missing - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResult\\:\\:fetchAssoc\\(\\) should return mixed but return statement is missing\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResult\\:\\:getFieldData\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockResult\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResult.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method CodeIgniter\\\\Test\\\\Mock\\\\MockResult\\:\\:fetchAssoc\\(\\) should be covariant with return type \\(array\\|false\\|null\\) of method CodeIgniter\\\\Database\\\\BaseResult\\\\:\\:fetchAssoc\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockResult.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockServices\\:\\:\\$classmap has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockServices.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockServices\\:\\:\\$psr4 has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockServices.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockSession\\:\\:regenerate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockSession.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockSession\\:\\:setCookie\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockSession.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockSession\\:\\:setSaveHandler\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockSession.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockSession\\:\\:startSession\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockSession.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\Mock\\\\MockSession\\:\\:\\$didRegenerate has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockSession.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockTable\\:\\:__call\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockTable.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockTable\\:\\:__call\\(\\) has parameter \\$method with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockTable.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Test\\\\Mock\\\\MockTable\\:\\:__call\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/Mock/MockTable.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\PhpStreamWrapper\\:\\:register\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/PhpStreamWrapper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\PhpStreamWrapper\\:\\:restore\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/PhpStreamWrapper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\PhpStreamWrapper\\:\\:setContent\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/PhpStreamWrapper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\PhpStreamWrapper\\:\\:stream_stat\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/PhpStreamWrapper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestResponse\\:\\:assertJSONExact\\(\\) has parameter \\$test with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/TestResponse.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestResponse\\:\\:assertJSONFragment\\(\\) has parameter \\$fragment with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Test/TestResponse.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Throttle\\\\Throttler\\:\\:\\$testTime \\(int\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Throttle/Throttler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Typography\\\\Typography\\:\\:protectCharacters\\(\\) has parameter \\$match with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Typography/Typography.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Typography\\\\Typography\\:\\:\\$innerBlockRequired type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Typography/Typography.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\CreditCardRules\\:\\:\\$cards type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/CreditCardRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:filter\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:filter\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:filter\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:run\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:run\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DotArrayFilter\\:\\:run\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/DotArrayFilter.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, array\\|null given\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/system/Validation/FileRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:differs\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:field_exists\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:field_exists\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:is_not_unique\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:is_unique\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:matches\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:required\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:required_with\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Rules\\:\\:required_without\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\CreditCardRules\\:\\:valid_cc_number\\(\\) has parameter \\$ccNumber with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/CreditCardRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha_dash\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha_numeric\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha_numeric_punct\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha_numeric_space\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:alpha_space\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:decimal\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:hex\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:integer\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:is_natural\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:is_natural_no_zero\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:numeric\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:regex_match\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:string\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:timezone\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_base64\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_date\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_email\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_emails\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_ip\\(\\) has parameter \\$ip with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_json\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_url\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRules\\:\\:valid_url_strict\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/FormatRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:differs\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:differs\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:equals\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:exact_length\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:field_exists\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:field_exists\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:greater_than\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:greater_than_equal_to\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:in_list\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:is_not_unique\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:is_not_unique\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:is_unique\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:is_unique\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:less_than\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:less_than_equal_to\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:matches\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:matches\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:max_length\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:min_length\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:not_equals\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:not_in_list\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:required\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:required_with\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:required_with\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:required_without\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\Rules\\:\\:required_without\\(\\) has parameter \\$str with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/StrictRules/Rules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:check\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:check\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:fillPlaceholders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:fillPlaceholders\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:fillPlaceholders\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:getRules\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:getValidated\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:isClosure\\(\\) has parameter \\$rule with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:isStringList\\(\\) has parameter \\$array with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:loadRuleGroup\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processIfExist\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processIfExist\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processIfExist\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processPermitEmpty\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processPermitEmpty\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processPermitEmpty\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processPermitEmpty\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processRules\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processRules\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:processRules\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:retrievePlaceholders\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:retrievePlaceholders\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:run\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:run\\(\\) has parameter \\$dbGroup with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:setRule\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:setRule\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:setRules\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:setRules\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\Validation\\:\\:splitRules\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$customErrors type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$data type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$errors type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$ruleSetFiles type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$ruleSetInstances type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\Validation\\:\\:\\$validated type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/Validation/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:check\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:check\\(\\) has parameter \\$value with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:getRules\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:getValidated\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:loadRuleGroup\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:run\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:run\\(\\) has parameter \\$dbGroup with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:setRule\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:setRule\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:setRules\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationInterface\\:\\:setRules\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/Validation/ValidationInterface.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method CodeIgniter\\\\Config\\\\Factories\\:\\:cells\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cell\\:\\:determineClass\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cell\\:\\:getMethodParams\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cell\\:\\:getMethodParams\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cell\\:\\:renderCell\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cell\\:\\:renderSimpleClass\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:fill\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:getNonPublicProperties\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:getPublicProperties\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:includeComputedProperties\\(\\) has parameter \\$properties with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:includeComputedProperties\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Cells\\\\Cell\\:\\:view\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/system/Traits/PropertiesTrait\\.php\\:49\\:\\:getProperties\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Cells/Cell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\View\\\\Parser\\:\\:addPlugin\\(\\) has parameter \\$callback with no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Parser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\Parser\\:\\:replaceSingle\\(\\) has parameter \\$pattern with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Parser.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, string\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Table.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Property CodeIgniter\\\\View\\\\Table\\:\\:\\$function type has no signature specified for callable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/system/View/Table.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/system/View/View.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Cells\\\\StarterCell\\:\\:hello\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Cells/StarterCell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Cells\\\\StarterCell\\:\\:hello\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Cells/StarterCell.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Commands/LanguageCommand.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Commands\\\\ParamsReveal\\:\\:\\$args has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Commands/ParamsReveal.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Config\\\\BadRegistrar\\:\\:RegistrarConfig\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Config/BadRegistrar.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$filters might not be defined\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/_support/Config/Filters.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$routes might not be defined\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/_support/Config/Routes.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Config\\\\TestRegistrar\\:\\:RegistrarConfig\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Config/TestRegistrar.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Config\\\\Validation\\:\\:\\$signup has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Config/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Config\\\\Validation\\:\\:\\$signup_errors has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Config/Validation.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Hello\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Hello.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Newautorouting\\:\\:getIndex\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Newautorouting.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Newautorouting\\:\\:postSave\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Newautorouting.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Newautorouting\\:\\:postSave\\(\\) has parameter \\$c with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Newautorouting.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:echoJson\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:goaway\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:index3\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:json\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:oops\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:pop\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:toindex\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:weasel\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Popcorn\\:\\:xml\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Popcorn.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Remap\\:\\:_remap\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Remap\\:\\:_remap\\(\\) has parameter \\$method with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Remap\\:\\:_remap\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Remap\\:\\:abc\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Controllers\\\\Remap\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$value \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBase64\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBase64.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$binary \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$binary \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:get\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:get\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$string \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: method.childParameterType - 'message' => '#^Parameter \\#1 \\$string \\(string\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastBinaryUUID\\:\\:set\\(\\) should be contravariant with parameter \\$value \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastBinaryUUID.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastPassParameters\\:\\:set\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastPassParameters.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastPassParameters\\:\\:set\\(\\) should be covariant with return type \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\BaseCast\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastPassParameters.php', -]; -$ignoreErrors[] = [ - // identifier: method.childReturnType - 'message' => '#^Return type \\(mixed\\) of method Tests\\\\Support\\\\Entity\\\\Cast\\\\CastPassParameters\\:\\:set\\(\\) should be covariant with return type \\(array\\|bool\\|float\\|int\\|object\\|string\\|null\\) of method CodeIgniter\\\\Entity\\\\Cast\\\\CastInterface\\:\\:set\\(\\)$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/Cast/CastPassParameters.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\CustomUser\\:\\:__construct\\(\\) has parameter \\$email with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/CustomUser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\CustomUser\\:\\:__get\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/CustomUser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Entity\\\\CustomUser\\:\\:reconstruct\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/CustomUser.php', -]; -$ignoreErrors[] = [ - // identifier: new.static - 'message' => '#^Unsafe usage of new static\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Entity/CustomUser.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Language\\\\SecondMockLanguage\\:\\:loaded\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Language/SecondMockLanguage.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Language\\\\SecondMockLanguage\\:\\:loadem\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Language/SecondMockLanguage.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Log\\\\Handlers\\\\TestHandler\\:\\:__construct\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Log/Handlers/TestHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Log\\\\Handlers\\\\TestHandler\\:\\:getLogs\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Log/Handlers/TestHandler.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property Tests\\\\Support\\\\Log\\\\Handlers\\\\TestHandler\\:\\:\\$logs type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Log/Handlers/TestHandler.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Database\\\\ConnectionInterface\\:\\:tableExists\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/MigrationTestMigrations/Database/Migrations/2018-01-24-102302_Another_migration.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterDeleteMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterDeleteMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterFindMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterFindMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterInsertBatchMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterInsertBatchMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterInsertMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterInsertMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterUpdateBatchMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterUpdateBatchMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterUpdateMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:afterUpdateMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeDeleteMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeDeleteMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeFindMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeFindMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeInsertBatchMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeInsertBatchMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeInsertMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeInsertMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeUpdateBatchMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeUpdateBatchMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeUpdateMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:beforeUpdateMethod\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Models\\\\EventModel\\:\\:hasToken\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\EventModel\\:\\:\\$beforeFindReturnData has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\EventModel\\:\\:\\$eventData has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\EventModel\\:\\:\\$tokens has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/EventModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\JobModel\\:\\:\\$description has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/JobModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\JobModel\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/JobModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\UserModel\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/UserModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\UserModel\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/UserModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property Tests\\\\Support\\\\Models\\\\UserModel\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Models/UserModel.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:getPrivate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:getStaticPrivate\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateMethod\\(\\) has parameter \\$param1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateMethod\\(\\) has parameter \\$param2 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: method.unused - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateMethod\\(\\) is unused\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateStaticMethod\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateStaticMethod\\(\\) has parameter \\$param1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateStaticMethod\\(\\) has parameter \\$param2 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: method.unused - 'message' => '#^Static method Tests\\\\Support\\\\Test\\\\TestForReflectionHelper\\:\\:privateStaticMethod\\(\\) is unused\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Test/TestForReflectionHelper.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Validation\\\\TestRules\\:\\:array_count\\(\\) has parameter \\$count with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Validation/TestRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\Validation\\\\TestRules\\:\\:array_count\\(\\) has parameter \\$value with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Validation/TestRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Validation\\\\TestRules\\:\\:check_object_rule\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Validation/TestRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method Tests\\\\Support\\\\Validation\\\\TestRules\\:\\:check_object_rule\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Validation/TestRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\Validation\\\\TestRules\\:\\:customError\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/Validation/TestRules.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\Cells\\\\ListerCell\\:\\:getItemsProperty\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/ListerCell.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property Tests\\\\Support\\\\View\\\\Cells\\\\ListerCell\\:\\:\\$items type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/ListerCell.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$value might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/addition.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$message might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/awesome_cell.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$this might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/colors.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$greeting might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/greeting.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$name might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/greeting.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$items might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/lister.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$value might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/multiplier.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$message might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Cells/notice.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\OtherCells\\\\SampleClass\\:\\:hello\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/OtherCells/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:echobox\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:echobox\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:hello\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:staticEcho\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:staticEcho\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:work\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:work\\(\\) has parameter \\$p1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:work\\(\\) has parameter \\$p2 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClass\\:\\:work\\(\\) has parameter \\$p4 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClass.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method Tests\\\\Support\\\\View\\\\SampleClassWithInitController\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/SampleClassWithInitController.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$testString might not be defined\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/View/Views/simple.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method App\\\\Controllers\\\\Mycontroller\\:\\:getSomemethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/_controller/Mycontroller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method App\\\\Controllers\\\\foo\\\\bar\\\\baz\\\\Some_controller\\:\\:some_method\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/_support/_controller/foo/bar/baz/Some_controller.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'CONTENT_TYPE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\API\\\\ResponseTraitTest\\:\\:createRequestAndResponse\\(\\) has parameter \\$userHeaders with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\API\\\\ResponseTraitTest\\:\\:invoke\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\API\\\\ResponseTraitTest\\:\\:invoke\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\API\\\\ResponseTraitTest\\:\\:makeController\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\API\\\\ResponseTraitTest\\:\\:makeController\\(\\) has parameter \\$userHeaders with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:__construct\\(\\) has parameter \\$formatter with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:__construct\\(\\) has parameter \\$request with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:__construct\\(\\) has parameter \\$response with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:__construct\\(\\) has parameter \\$formatter with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:__construct\\(\\) has parameter \\$request with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:__construct\\(\\) has parameter \\$response with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:__construct\\(\\) has parameter \\$formatter with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:__construct\\(\\) has parameter \\$request with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:__construct\\(\\) has parameter \\$response with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:__construct\\(\\) has parameter \\$request with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:__construct\\(\\) has parameter \\$response with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:fail\\(\\) has parameter \\$messages with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:format\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:respond\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:respondCreated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:respondDeleted\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:respondUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:\\$formatter has no type specified\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:\\$request has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:116\\:\\:\\$response has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:\\$formatter has no type specified\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:\\$request has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:177\\:\\:\\$response has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:\\$formatter has no type specified\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:\\$request has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:299\\:\\:\\$response has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:\\$format \\(\'html\'\\|\'json\'\\|\'xml\'\\|null\\) does not accept \'txt\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:\\$request has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/API/ResponseTraitTest\\.php\\:639\\:\\:\\$response has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/API/ResponseTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:checkConfig\\(\\) has parameter \\$fromComponent with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:checkConfig\\(\\) has parameter \\$fromMain with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:getComposerJson\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:\\$devComposer type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:\\$frameworkComposer type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\AutoReview\\\\ComposerJsonTest\\:\\:\\$starterComposer type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/ComposerJsonTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\AutoReview\\\\FrameworkCodeTest\\:\\:getTestClasses\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/FrameworkCodeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\AutoReview\\\\FrameworkCodeTest\\:\\:provideEachTestClassHasCorrectGroupAttributeName\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/FrameworkCodeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\AutoReview\\\\FrameworkCodeTest\\:\\:\\$recognizedGroupAttributeNames type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/FrameworkCodeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\AutoReview\\\\FrameworkCodeTest\\:\\:\\$testClasses type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/AutoReview/FrameworkCodeTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 3 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'ignored\', \'b\', \'c\', \'\\-\\-parm\', \'pvalue\', \'d\', \'\\-\\-p2\', \'\\-\\-p3\', \'value 3\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'ignored\', \'b\', \'c\', \'\\-\\-parm\', \'pvalue\', \'d\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'ignored\', \'b\', \'c\', \'d\', \'\\-\\-parm\', \'pvalue\', \'d2\', \'da\\-sh\', \'\\-\\-fix\', \'\\-\\-opt\\-in\', \'sure\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'ignored\', \'b\', \'c\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLITest\\:\\:provideTable\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLITest\\:\\:testTable\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLITest\\:\\:testTable\\(\\) has parameter \\$tbody with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\CLITest\\:\\:testTable\\(\\) has parameter \\$thead with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/CLITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'app\\.baseURL\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'argv\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'http\\://example\\.com/\' directly on offset \'app\\.baseURL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning int\\<1, max\\> directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-empty\\-array\\ directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CLI\\\\ConsoleTest\\:\\:initCLI\\(\\) has parameter \\$command with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CLI/ConsoleTest.php', -]; -$ignoreErrors[] = [ - // identifier: phpDoc.parseError - 'message' => '#^PHPDoc tag @var has invalid value \\(@var FileVarExportHandler\\|CacheInterface\\)\\: Unexpected token "@var", expected type at offset 16$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/FactoriesCacheFileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Config\\\\BaseConfig\\:\\:\\$baseURL\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/FactoriesCacheFileVarExportHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\BaseHandlerTest\\:\\:provideValidateKeyInvalidType\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/BaseHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new DummyHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/DummyHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new BaseTestFileHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/FileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new FileHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/FileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\BaseTestFileHandler\\:\\:getFileInfoTest\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/FileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandlerTest\\:\\:getKeyArray\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/FileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\FileHandlerTest\\:\\:provideSaveMode\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/FileHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new MemcachedHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/MemcachedHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\MemcachedHandlerTest\\:\\:getKeyArray\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/MemcachedHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new PredisHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/PredisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\PredisHandlerTest\\:\\:getKeyArray\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/PredisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.cacheHandlerInstance - 'message' => '#^Calling new RedisHandler\\(\\) directly is incomplete to get the cache instance\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Cache\\\\Handlers\\\\RedisHandlerTest\\:\\:getKeyArray\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/Handlers/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-empty\\-array\\ directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-falsy\\-string directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cache\\\\ResponseCacheTest\\:\\:createIncomingRequest\\(\\) has parameter \\$query with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Cache/ResponseCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/cannotFound\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/cli\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/example\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/image\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 20, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/pages/about\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 8, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/test\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'CLI\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/1\\.1\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 8, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/2\\.0\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/3\\.0\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 1 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 27, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'/\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 12, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'cli\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'example\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'image\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'pages/about\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 7, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-falsy\\-string directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:pretend\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CodeIgniterTest\\:\\:providePageCacheWithCacheQueryString\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CodeIgniterTest\\:\\:testPageCacheWithCacheQueryString\\(\\) has parameter \\$cacheQueryStringValue with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CodeIgniterTest\\:\\:testPageCacheWithCacheQueryString\\(\\) has parameter \\$testingUrls with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$to of method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) expects array\\|\\(Closure\\(mixed \\.\\.\\.\\)\\: \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|void\\)\\)\\|string, Closure\\(mixed\\)\\: \\(CodeIgniter\\\\HTTP\\\\DownloadResponse\\|null\\) given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$to of method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) expects array\\|\\(Closure\\(mixed \\.\\.\\.\\)\\: \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|void\\)\\)\\|string, Closure\\(mixed\\)\\: CodeIgniter\\\\HTTP\\\\ResponseInterface given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$to of method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) expects array\\|\\(Closure\\(mixed \\.\\.\\.\\)\\: \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|void\\)\\)\\|string, Closure\\(mixed\\)\\: non\\-falsy\\-string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$to of method CodeIgniter\\\\Router\\\\RouteCollection\\:\\:add\\(\\) expects array\\|\\(Closure\\(mixed \\.\\.\\.\\)\\: \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|void\\)\\)\\|string, Closure\\(mixed\\)\\: void given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CodeIgniterTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property Tests\\\\Support\\\\Commands\\\\AppInfo\\:\\:\\$foobar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/BaseCommandTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/CellGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/CommandGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\CommandTest\\:\\:provideCommandParsesArgsCorrectly\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/CommandTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/ControllerGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\CreateDatabaseTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/CreateDatabaseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'production\' directly on offset \'CI_ENVIRONMENT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/EnvironmentCommandTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'CI_ENVIRONMENT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/EnvironmentCommandTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\FilterCheckTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/FilterCheckTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'encryption\\.key\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/GenerateKeyTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\HelpCommandTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/HelpCommandTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\InfoCacheTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/InfoCacheTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/ModelGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\RoutesTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/RoutesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$mock of static method CodeIgniter\\\\Config\\\\BaseService\\:\\:injectMock\\(\\) expects object, null given\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Commands/RoutesTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/ScaffoldGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinderTest\\:\\:getActualTranslationFourKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Translation/LocalizationFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinderTest\\:\\:getActualTranslationOneKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Translation/LocalizationFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Translation\\\\LocalizationFinderTest\\:\\:getActualTranslationThreeKeys\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Translation/LocalizationFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\NamespacesTest\\:\\:getBuffer\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/NamespacesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\AutoRouteCollectorTest\\:\\:createAutoRouteCollector\\(\\) has parameter \\$filterConfigFilters with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollectorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\Controllers\\\\Dash_folder\\\\Dash_controller\\:\\:getDash_method\\(\\) has parameter \\$p1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/AutoRouterImproved/Controllers/Dash_folder/Dash_controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\Controllers\\\\Dash_folder\\\\Dash_controller\\:\\:getDash_method\\(\\) has parameter \\$p2 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/AutoRouterImproved/Controllers/Dash_folder/Dash_controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\Controllers\\\\Dash_folder\\\\Dash_controller\\:\\:getSomemethod\\(\\) has parameter \\$p1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/AutoRouterImproved/Controllers/Dash_folder/Dash_controller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\AutoRouterImproved\\\\Controllers\\\\SubDir\\\\BlogController\\:\\:getSomeMethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/AutoRouterImproved/Controllers/SubDir/BlogController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\FilterFinderTest\\:\\:createFilters\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/FilterFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\FilterFinderTest\\:\\:createRouteCollection\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/FilterFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: return.type - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\FilterFinderTest\\:\\:createRouteCollection\\(\\) should return CodeIgniter\\\\Router\\\\RouteCollection but returns CodeIgniter\\\\Router\\\\RouteCollectionInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/FilterFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\FilterFinderTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/FilterFinderTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Commands\\\\Utilities\\\\Routes\\\\SampleURIGeneratorTest\\:\\:provideGet\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Commands/Utilities/Routes/SampleURIGeneratorTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'foo\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsSendTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'foo\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.modelArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(\'CodeIgniter\\\\\\\\UnexsistenceClass\'\\) passed to function model does not extend CodeIgniter\\\\\\\\Model\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'bar\' directly on offset \'foo\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: class.notFound - 'message' => '#^Class CodeIgniter\\\\UnexsistenceClass not found\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CommonFunctionsTest\\:\\:provideCleanPathActuallyCleaningThePaths\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.modelArgumentType - 'message' => '#^Parameter \\#1 \\$name of function model expects a valid class string, \'JobModel\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$context of function esc expects \'attr\'\\|\'css\'\\|\'html\'\\|\'js\'\\|\'raw\'\\|\'url\', \'0\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$context of function esc expects \'attr\'\\|\'css\'\\|\'html\'\\|\'js\'\\|\'raw\'\\|\'url\', \'bogus\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/CommonFunctionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: function.notFound - 'message' => '#^Function foo_bar_baz not found\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: function.inner - 'message' => '#^Inner named functions are not supported by PHPStan\\. Consider refactoring to an anonymous function, class method, or a top\\-level\\-defined function\\. See issue \\#165 \\(https\\://github\\.com/phpstan/phpstan/issues/165\\) for more details\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\CommonHelperTest\\:\\:\\$dummyHelpers type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method \'bar\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method \'baz\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method \'caches\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method \'foo\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method \'timers\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.unknownServiceMethod - 'message' => '#^Call to unknown service method string\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\CommonSingleServiceTest\\:\\:provideServiceNames\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/CommonSingleServiceTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'BAR\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'FOO\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'NULL\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SPACED\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SimpleConfig_simple_name\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'TT\' directly on offset \'SER_VAR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\DotEnvTest\\:\\:provideLoadsVars\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$file of class CodeIgniter\\\\Config\\\\DotEnv constructor expects string, int given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/DotEnvTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method CodeIgniter\\\\Config\\\\Factories\\:\\:cells\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method CodeIgniter\\\\Config\\\\Factories\\:\\:tedwigs\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method CodeIgniter\\\\Config\\\\Factories\\:\\:widgets\\(\\)\\.$#', - 'count' => 13, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:getFactoriesStaticProperty\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:getFactoriesStaticProperty\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:testGetComponentInstances\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:testIsUpdated\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:testSetComponentInstances\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\FactoriesTest\\:\\:testSetComponentInstances\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$expected of method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) expects class\\-string\\, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.modelArgumentType - 'message' => '#^Parameter \\#1 \\$name of function model expects a valid class string, \'CodeIgniter\\\\\\\\Shield\\\\\\\\Models\\\\\\\\UserModel\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$classname of static method CodeIgniter\\\\Config\\\\Factories\\:\\:define\\(\\) expects class\\-string, string given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Config/FactoriesTest\\.php\\:89\\:\\:\\$widgets has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/FactoriesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\MimesTest\\:\\:provideGuessExtensionFromType\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/MimesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Config\\\\MimesTest\\:\\:provideGuessTypeFromExtension\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/MimesTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method Tests\\\\Support\\\\Config\\\\Services\\:\\:SeSsIoN\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/ServicesTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method Tests\\\\Support\\\\Config\\\\Services\\:\\:SeSsIoNs\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/ServicesTest.php', -]; -$ignoreErrors[] = [ - // identifier: staticMethod.notFound - 'message' => '#^Call to an undefined static method Tests\\\\Support\\\\Config\\\\Services\\:\\:redirectResponse\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/ServicesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Config\\\\ServicesTest\\:\\:\\$original type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/ServicesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property RegistrarConfig\\:\\:\\$bar has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/RegistrarConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property RegistrarConfig\\:\\:\\$foo has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/RegistrarConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$FOO has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$QEMPTYSTR has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$QFALSE has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$QZERO has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$QZEROSTR has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$alpha has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$bravo has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$charlie has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$crew has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$default has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$delta has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$dessert has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$echo has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$first has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$float has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$foxtrot has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$fruit has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$golf has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$int has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$longie has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$one_deep has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$onedeep has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$onedeep_value has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$password has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$second has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$shortie has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property SimpleConfig\\:\\:\\$simple has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Config/fixtures/SimpleConfig.php', -]; -$ignoreErrors[] = [ - // identifier: catch.neverThrown - 'message' => '#^Dead catch \\- CodeIgniter\\\\HTTP\\\\Exceptions\\\\RedirectException is never thrown in the try block\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/ControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$cookies of class CodeIgniter\\\\Cookie\\\\CookieStore constructor expects array\\, array\\ given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieStoreTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Cookie\\\\CookieStoreTest\\:\\:\\$defaults type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieStoreTest.php', -]; -$ignoreErrors[] = [ - // identifier: expr.resultUnused - 'message' => '#^Expression "\\$cookie\\[\'expiry\'\\]" on a separate line does not do anything\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieTest\\:\\:provideConfigPrefix\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieTest\\:\\:provideInvalidExpires\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieTest\\:\\:provideSetCookieHeaderCreation\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Cookie\\\\CookieTest\\:\\:testSetCookieHeaderCreation\\(\\) has parameter \\$changed with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$options of class CodeIgniter\\\\Cookie\\\\Cookie constructor expects array\\, array\\ given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Cookie\\\\CookieTest\\:\\:\\$defaults type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Cookie/CookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: variable.implicitArray - 'message' => '#^Implicit array creation is not allowed \\- variable \\$array does not exist\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:createDataConverter\\(\\) has parameter \\$extractor with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:createDataConverter\\(\\) has parameter \\$handlers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:createDataConverter\\(\\) has parameter \\$reconstructor with no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:createDataConverter\\(\\) has parameter \\$types with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:provideConvertDataFromDB\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:provideConvertDataToDB\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataFromDB\\(\\) has parameter \\$dbData with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataFromDB\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataFromDB\\(\\) has parameter \\$types with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataToDB\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataToDB\\(\\) has parameter \\$phpData with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\DataConverter\\\\DataConverterTest\\:\\:testConvertDataToDB\\(\\) has parameter \\$types with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DataConverter/DataConverterTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Test\\\\Mock\\\\MockConnection\\:\\:\\$foobar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseConnectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseConnectionTest\\:\\:provideProtectIdentifiers\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseConnectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnectionTest\\:\\:\\$failoverOptions type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseConnectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\BaseConnectionTest\\:\\:\\$options type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseConnectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseQueryTest\\:\\:provideHighlightQueryKeywords\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseQueryTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\BaseQueryTest\\:\\:provideIsWriteType\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/BaseQueryTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$from of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:from\\(\\) expects array\\|string, null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/FromTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$subject of function str_replace expects array\\|string, CodeIgniter\\\\Database\\\\ResultInterface given\\.$#', - 'count' => 10, - 'path' => __DIR__ . '/tests/system/Database/Builder/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$subject of function str_replace expects array\\|string, CodeIgniter\\\\Database\\\\ResultInterface\\|false given\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/tests/system/Database/Builder/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Test\\\\Mock\\\\MockConnection of property CodeIgniter\\\\Database\\\\Builder\\\\InsertTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/InsertTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Test\\\\Mock\\\\MockConnection of property CodeIgniter\\\\Database\\\\Builder\\\\UnionTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/UnionTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Test\\\\Mock\\\\MockConnection of property CodeIgniter\\\\Database\\\\Builder\\\\UpdateTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/UpdateTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Test\\\\Mock\\\\MockConnection of property CodeIgniter\\\\Database\\\\Builder\\\\WhenTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/WhenTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Builder\\\\WhereTest\\:\\:provideWhereInEmptyValuesThrowInvalidArgumentException\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/WhereTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Builder\\\\WhereTest\\:\\:provideWhereInvalidKeyThrowInvalidArgumentException\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/WhereTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Test\\\\Mock\\\\MockConnection of property CodeIgniter\\\\Database\\\\Builder\\\\WhereTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Builder/WhereTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\ConfigTest\\:\\:provideConvertDSN\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/ConfigTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\ConfigTest\\:\\:\\$dsnGroup type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/ConfigTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\ConfigTest\\:\\:\\$dsnGroupPostgre type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/ConfigTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\ConfigTest\\:\\:\\$dsnGroupPostgreNative type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/ConfigTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\ConfigTest\\:\\:\\$group type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/ConfigTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\DatabaseTestCase\\\\DatabaseTestCaseMigrationOnce1Test\\:\\:\\$namespace type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/DatabaseTestCase/DatabaseTestCaseMigrationOnce1Test.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\DatabaseTestCase\\\\DatabaseTestCaseMigrationOnce2Test\\:\\:\\$namespace type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/DatabaseTestCase/DatabaseTestCaseMigrationOnce2Test.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type array\\|string of property CodeIgniter\\\\Database\\\\DatabaseTestCaseTest\\:\\:\\$seed is not the same as PHPDoc type array\\\\>\\|class\\-string\\ of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$seed\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/DatabaseTestCaseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\DatabaseTestCaseTest\\:\\:\\$namespace type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/DatabaseTestCaseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\DatabaseTestCaseTest\\:\\:\\$seed type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/DatabaseTestCaseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\ConnectTest\\:\\:\\$group1 has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/ConnectTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\ConnectTest\\:\\:\\$group2 has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/ConnectTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\ConnectTest\\:\\:\\$tests has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/ConnectTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:escapeLikeStringDirect\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/EscapeTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$name on array\\|object\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/FabricatorLiveTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$fields of method CodeIgniter\\\\Database\\\\Forge\\:\\:addField\\(\\) expects array\\\\|string, array\\ given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Database/Live/ForgeTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$currentRow on CodeIgniter\\\\Database\\\\ResultInterface\\|false\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$name on array\\|object\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$resultID on CodeIgniter\\\\Database\\\\ResultInterface\\|false\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$deleted_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Database/Live/GetTest\\.php\\:256\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/GetTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getWhere\\(\\) with incorrect case\\: getwhere$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Database/Live/InsertTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type string of property CodeIgniter\\\\Database\\\\Live\\\\MetadataTest\\:\\:\\$seed is not the same as PHPDoc type array\\\\>\\|class\\-string\\ of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$seed\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/MetadataTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\MetadataTest\\:\\:\\$expectedTables type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/MetadataTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$numberNative\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Database/Live/MySQLi/NumberNativeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\MySQLi\\\\NumberNativeTest\\:\\:\\$tests has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/MySQLi/NumberNativeTest.php', -]; -$ignoreErrors[] = [ - // identifier: class.nameCase - 'message' => '#^Class stdClass referenced with incorrect case\\: stdclass\\.$#', - 'count' => 9, - 'path' => __DIR__ . '/tests/system/Database/Live/MySQLi/RawSqlTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:getCursor\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/OCI8/CallStoredProcedureTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Database\\\\BaseConnection\\:\\:storedProcedure\\(\\)\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Database/Live/OCI8/CallStoredProcedureTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$schema\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/OrderTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$schema\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/PreparedQueryTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$db of class CodeIgniter\\\\Database\\\\SQLite3\\\\Table constructor expects CodeIgniter\\\\Database\\\\SQLite3\\\\Connection, CodeIgniter\\\\Database\\\\BaseConnection given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/AlterTableTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$forge of class CodeIgniter\\\\Database\\\\SQLite3\\\\Table constructor expects CodeIgniter\\\\Database\\\\SQLite3\\\\Forge, CodeIgniter\\\\Database\\\\Forge given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/AlterTableTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\SQLite3\\\\AlterTableTest\\:\\:\\$forge \\(CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\) does not accept CodeIgniter\\\\Database\\\\Forge\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/AlterTableTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Database\\\\SQLite3\\\\Connection of property CodeIgniter\\\\Database\\\\Live\\\\SQLite3\\\\GetIndexDataTest\\:\\:\\$db is not the same as PHPDoc type CodeIgniter\\\\Database\\\\BaseConnection of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$db\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/GetIndexDataTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\SQLite3\\\\GetIndexDataTest\\:\\:\\$db \\(CodeIgniter\\\\Database\\\\SQLite3\\\\Connection\\) does not accept CodeIgniter\\\\Database\\\\BaseConnection\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/GetIndexDataTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Database\\\\Live\\\\SQLite3\\\\GetIndexDataTest\\:\\:\\$forge \\(CodeIgniter\\\\Database\\\\SQLite3\\\\Forge\\) does not accept CodeIgniter\\\\Database\\\\Forge\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/SQLite3/GetIndexDataTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Live\\\\UpdateTest\\:\\:provideUpdateBatch\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/UpdateTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Live\\\\UpdateTest\\:\\:testUpdateBatch\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/UpdateTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Database\\\\Live\\\\UpdateTest\\:\\:testUpdateBatch\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Live/UpdateTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:getWhere\\(\\) with incorrect case\\: getwhere$#', - 'count' => 9, - 'path' => __DIR__ . '/tests/system/Database/Live/UpsertTest.php', -]; -$ignoreErrors[] = [ - // identifier: class.nameCase - 'message' => '#^Class stdClass referenced with incorrect case\\: stdclass\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Database/Live/UpsertTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$set of method CodeIgniter\\\\Database\\\\BaseBuilder\\:\\:updateFields\\(\\) expects array\\\\|string, array\\ given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Database/Live/UpsertTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Database\\\\BaseConnection\\:\\:\\$schema\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Database/Migrations/MigrationRunnerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Database\\\\Migrations\\\\MigrationRunnerTest\\:\\:resetTables\\(\\) has parameter \\$db with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Migrations/MigrationRunnerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Database\\\\Migrations\\\\MigrationRunnerTest\\:\\:\\$namespace type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Database/Migrations/MigrationRunnerTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:pretend\\(\\)\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Debug\\\\ExceptionHandlerTest\\:\\:backupIniValues\\(\\) has parameter \\$keys with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Debug\\\\ExceptionHandlerTest\\:\\:\\$iniSettings type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'CODEIGNITER_SCREAM_DEPRECATIONS\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'1\' directly on offset \'CODEIGNITER_SCREAM_DEPRECATIONS\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: function.resultUnused - 'message' => '#^Call to function strlen\\(\\) on a separate line has no effect\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.frameworkExceptionInstance - 'message' => '#^Instantiating CastException using new is not allowed\\. Use one of its named constructors instead\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/ExceptionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$callable of method CodeIgniter\\\\Debug\\\\Timer\\:\\:record\\(\\) expects callable\\(\\)\\: mixed, \'strlen\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Debug/TimerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.frameworkExceptionInstance - 'message' => '#^Instantiating FrameworkException using new is not allowed\\. Use one of its named constructors instead\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/DebugTraceableTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Email\\\\EmailTest\\:\\:provideEmailSendWithClearance\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Email/EmailTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, mixed given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Email/EmailTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$key\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/EncryptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\Encryption\\:\\:\\$bogus\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/EncryptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\Encryption\\\\Encryption\\:\\:\\$digest\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/EncryptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\Encryption\\\\Encryption\\:\\:\\$key\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Encryption/EncryptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'encryption\\.key\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/EncryptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$cipher\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/Handlers/OpenSSLHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$key\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Encryption/Handlers/OpenSSLHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$blockSize\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/Handlers/SodiumHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$driver\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/Handlers/SodiumHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Encryption\\\\EncrypterInterface\\:\\:\\$key\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Encryption/Handlers/SodiumHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property object\\:\\:\\$bar\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method object\\:\\:toRawArray\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: expr.resultUnused - 'message' => '#^Expression "\\$entity\\-\\>ninth" on a separate line does not do anything\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getCastEntity\\(\\) has parameter \\$data with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getCastNullableEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getCustomCastEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getMappedEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getNewSetterGetterEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getSimpleSwappedEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Entity\\\\EntityTest\\:\\:getSwappedEntity\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Entity/EntityTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.configArgumentInstanceof - 'message' => '#^Argument \\#1 \\$name \\(\'Modules\'\\) passed to function config does not extend CodeIgniter\\\\\\\\Config\\\\\\\\BaseConfig\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Events/EventsTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Events\\\\Events\\:\\:unInitialize\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Events/EventsTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Filters\\\\CSRFTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\|null\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Filters/CSRFTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/DebugToolbarTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Filters\\\\DebugToolbarTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/DebugToolbarTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'DELETE\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 36, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'spark\', \'list\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:createFilters\\(\\) has parameter \\$request with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:provideBeforeExcept\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:provideProcessMethodProcessGlobalsWithExcept\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:testBeforeExcept\\(\\) has parameter \\$except with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:testBeforeExcept\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:testProcessMethodProcessGlobalsWithExcept\\(\\) has parameter \\$except with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Filters\\\\FiltersTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/FiltersTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Filters\\\\HoneypotTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\|null\\) does not accept CodeIgniter\\\\HTTP\\\\RequestInterface\\|CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|null\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Filters/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Filters\\\\HoneypotTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\|null\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Filters/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'val\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Filters/InvalidCharsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidCharsTest\\:\\:provideCheckControlStringWithControlCharsCausesException\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/InvalidCharsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Filters\\\\InvalidCharsTest\\:\\:provideCheckControlStringWithLineBreakAndTabReturnsTheString\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/InvalidCharsTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Filters/InvalidCharsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Filters\\\\fixtures\\\\InvalidClass\\:\\:index\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Filters/fixtures/InvalidClass.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertInstanceOf\\(\\) with incorrect case\\: assertInstanceof$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Format/FormatTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\XMLFormatterTest\\:\\:provideValidatingInvalidTags\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Format/XMLFormatterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Format\\\\XMLFormatterTest\\:\\:testValidatingInvalidTags\\(\\) has parameter \\$input with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Format/XMLFormatterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'baz\' directly on offset \'bar\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'abc \\< def\', \'McDonald\\\\\'s\', \'\\aaa\\\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'pro\\-file\', \'\\-\\-foo\', \'bar\', \'\\-\\-baz\', \'queue some stuff\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-\\-foo\', \'bar\', \'\\-\\-baz\', \'queue some stuff\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-\\-foo\', \'bar\', \'\\-\\-foo\\-bar\', \'yes\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-\\-foo\', \'bar\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-\\-foo\', \'oops\', \'bar\', \'\\-\\-baz\', \'queue some stuff\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-\\-foo\', \'oops\\-bar\', \'\\-\\-baz\', \'queue some stuff\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\', \'\\-foo\', \'bar\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'users\', \'21\', \'profile\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'spark\', \'command\', \'param1\', \'param2\', \'\\-\\-opt1\', \'opt1val\', \'\\-\\-opt\\-2\', \'opt 2 val\', \'param3\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CLIRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'10\' directly on offset \'HTTP_CONTENT_LENGTH\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CURLRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'en\\-US\' directly on offset \'HTTP_ACCEPT_LANGUAGE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CURLRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'gzip, deflate, br\' directly on offset \'HTTP_ACCEPT_ENCODING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CURLRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'site1\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/CURLRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ContentSecurityPolicyTest\\:\\:work\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ContentSecurityPolicyTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_USER_AGENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/DownloadResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'Mozilla/5\\.0 \\(Linux; U; Android 2\\.0\\.3; ja\\-jp; SC\\-02C Build/IML74K\\) AppleWebKit/534\\.30 \\(KHTML, like Gecko\\) Version/4\\.0 Mobile Safari/534\\.30\' directly on offset \'HTTP_USER_AGENT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/DownloadResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertNull\\(\\) with incorrect case\\: AssertNull$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\is_uploaded_file\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\is_uploaded_file\\(\\) has parameter \\$filename with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\move_uploaded_file\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\move_uploaded_file\\(\\) has parameter \\$destination with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\move_uploaded_file\\(\\) has parameter \\$filename with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Function CodeIgniter\\\\HTTP\\\\Files\\\\rrmdir\\(\\) has parameter \\$src with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/Files/FileMovingTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$value of class CodeIgniter\\\\HTTP\\\\Header constructor expects array\\\\|string\\>\\|string\\|null, int given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/HeaderTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$value of class CodeIgniter\\\\HTTP\\\\Header constructor expects array\\\\|string\\>\\|string\\|null, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/HeaderTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\\?/ci/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/index\\.php/popcorn/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/woot\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/woot\\?code\\=good\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 11, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?/ci/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?/ci/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/example\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestDetectingTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'10\\.0\\.1\\.200\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'10\\.10\\.1\\.200\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.123\\.123\\.123\' directly on offset \'HTTP_X_FORWARDED_FOR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 7, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.123\\.123\\.123\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.456\\.23\\.123\' directly on offset \'HTTP_X_FORWARDED_FOR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'192\\.168\\.5\\.21\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'2001\\:db8\\:1234\\:ffff\\:ffff\\:ffff\\:ffff\\:ffff\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'2001\\:db8\\:1235\\:ffff\\:ffff\\:ffff\\:ffff\\:ffff\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'2001\\:db8\\:\\:2\\:1\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'2001\\:db8\\:\\:2\\:2\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'2001\\:xyz\\:\\:1\' directly on offset \'HTTP_X_FORWARDED_FOR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'3\' directly on offset \'TEST\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'3\' directly on offset \'get\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'Mozilla\' directly on offset \'HTTP_USER_AGENT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'fr\\-FR; q\\=1\\.0, en; q\\=0\\.5\' directly on offset \'HTTP_ACCEPT_LANGUAGE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'fr; q\\=1\\.0, en; q\\=0\\.5\' directly on offset \'HTTP_ACCEPT_LANGUAGE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'on\' directly on offset \'HTTPS\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 3 directly on offset \'TEST\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 5 directly on offset \'TEST\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning mixed directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning mixed directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getCookie\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getDefaultLocale\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getFile\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getFileMultiple\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getFiles\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getGet\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getGetPost\\(\\)\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getLocale\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getOldInput\\(\\)\\.$#', - 'count' => 9, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getPost\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getPostGet\\(\\)\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:getVar\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:is\\(\\)\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:isAJAX\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:isCLI\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:isSecure\\(\\)\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\Request\\:\\:negotiate\\(\\)\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequestTest\\:\\:createRequest\\(\\) has parameter \\$body with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequestTest\\:\\:provideCanGrabGetRawInputVar\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequestTest\\:\\:provideExtensionPHP\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\IncomingRequestTest\\:\\:provideIsHTTPMethods\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property Config\\\\App\\:\\:\\$proxyIPs \\(array\\\\) does not accept array\\\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property Config\\\\App\\:\\:\\$proxyIPs \\(array\\\\) does not accept string\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/IncomingRequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\MessageTest\\:\\:provideArrayHeaderValue\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/MessageTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\MessageTest\\:\\:testSetHeaderWithExistingArrayValuesAppendArrayValue\\(\\) has parameter \\$arrayHeaderValue with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/MessageTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\MessageTest\\:\\:testSetHeaderWithExistingArrayValuesAppendStringValue\\(\\) has parameter \\$arrayHeaderValue with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/MessageTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Log\\\\Logger constructor expects Config\\\\Logger, CodeIgniter\\\\Test\\\\Mock\\\\MockLogger given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RedirectExceptionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RedirectResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'http\\://somewhere\\.com\' directly on offset \'HTTP_REFERER\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RedirectResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection of property CodeIgniter\\\\HTTP\\\\RedirectResponseTest\\:\\:\\$routes is not the same as PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection\\|null of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$routes\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RedirectResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RedirectResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'10\\.0\\.1\\.200\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'10\\.10\\.1\\.200\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.123\\.123\\.123\' directly on offset \'HTTP_X_FORWARDED_FOR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.123\\.123\\.123\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'123\\.456\\.23\\.123\' directly on offset \'HTTP_X_FORWARDED_FOR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'192\\.168\\.5\\.21\' directly on offset \'REMOTE_ADDR\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'baz\' directly on offset \'bar\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/RequestTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ResponseCookieTest\\:\\:\\$defaults type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseCookieTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$expire of method CodeIgniter\\\\HTTP\\\\Response\\:\\:setCookie\\(\\) expects int, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseSendTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'SERVER_SOFTWARE\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/1\\.1\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'Microsoft\\-IIS\' directly on offset \'SERVER_SOFTWARE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'SERVER_SOFTWARE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseTest\\:\\:provideRedirect\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\ResponseTest\\:\\:provideRedirectWithIIS\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$data of method CodeIgniter\\\\HTTP\\\\Message\\:\\:setBody\\(\\) expects string, array\\\\|string\\> given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$expire of method CodeIgniter\\\\HTTP\\\\Response\\:\\:setCookie\\(\\) expects int, string given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\HTTP\\\\ResponseTest\\:\\:\\$server type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/ResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'QUERY_STRING\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'\' directly on offset \'/ci/woot\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\\?/ci/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/candy/snickers\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/index\\.php/popcorn/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/woot\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/woot\\?code\\=good\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci431/public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci431/public/index\\.php/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/fruits/banana\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 13, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/fruits/banana\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?/ci/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\\?/ci/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/example\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/folder/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/folder/index\\.php/fruits/banana\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/sub/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/woot\' directly on offset \'PATH_INFO\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/woot\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'good\' directly on offset \'/ci/woot\\?code\' of \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURIFactoryDetectRoutePathTest\\:\\:createSiteURIFactory\\(\\) has parameter \\$server with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURIFactoryDetectRoutePathTest\\:\\:provideExtensionPHP\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryDetectRoutePathTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php/woot\\?code\\=good\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/woot\' directly on offset \'PATH_INFO\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'code\\=good\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'good\' directly on offset \'code\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'localhost\\:8080\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'users\\.example\\.jp\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURIFactoryTest\\:\\:provideCreateFromStringWithIndexPage\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURIFactoryTest\\:\\:provideCreateFromStringWithoutIndexPage\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURIFactoryTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURITest\\:\\:provideConstructor\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURITest\\:\\:provideRelativePathWithQueryOrFragment\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURITest\\:\\:provideSetPath\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURITest\\:\\:testConstructor\\(\\) has parameter \\$expectedSegments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\SiteURITest\\:\\:testSetPath\\(\\) has parameter \\$expectedSegments with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#4 \\$scheme of class CodeIgniter\\\\HTTP\\\\SiteURI constructor expects \'http\'\\|\'https\'\\|null, \'\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/SiteURITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'\' directly on offset \'QUERY_STRING\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/controller/method\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/index\\.php/controller/method\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/controller/method\' directly on offset \'PATH_INFO\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\URI\\:\\:getRoutePath\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:defaultResolutions\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:provideAuthorityRemovesDefaultPorts\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:provideAuthorityReturnsExceptedValues\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:providePathGetsFiltered\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:provideRemoveDotSegments\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:provideSetPath\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HTTP\\\\URITest\\:\\:provideSimpleUri\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/URITest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_REFERER\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/UserAgentTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_USER_AGENT\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/UserAgentTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'http\\://codeigniter\\.com/user_guide/\' directly on offset \'HTTP_REFERER\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HTTP/UserAgentTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'HTTP_USER_AGENT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/HTTP/UserAgentTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelperDotKeyExistsTest\\:\\:\\$array type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/Array/ArrayHelperDotKeyExistsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelperRecursiveDiffTest\\:\\:\\$compareWith type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/Array/ArrayHelperRecursiveDiffTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelperSortValuesByNaturalTest\\:\\:\\$arrayWithArrayValues type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/Array/ArrayHelperSortValuesByNaturalTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\Array\\\\ArrayHelperSortValuesByNaturalTest\\:\\:\\$arrayWithStringValues type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/Array/ArrayHelperSortValuesByNaturalTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:provideArrayDeepSearch\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:provideArrayFlattening\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:provideArrayGroupByExcludeEmpty\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:provideArrayGroupByIncludeEmpty\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:provideSortByMultipleKeys\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayDeepSearch\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayFlattening\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayFlattening\\(\\) has parameter \\$input with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByExcludeEmpty\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByExcludeEmpty\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByExcludeEmpty\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByIncludeEmpty\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByIncludeEmpty\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArrayGroupByIncludeEmpty\\(\\) has parameter \\$indexes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysFailsEmptyParameter\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysFailsEmptyParameter\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysFailsEmptyParameter\\(\\) has parameter \\$sortColumns with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithArray\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithArray\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithArray\\(\\) has parameter \\$sortColumns with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithObjects\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithObjects\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\ArrayHelperTest\\:\\:testArraySortByMultipleKeysWithObjects\\(\\) has parameter \\$sortColumns with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/ArrayHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\CookieHelperTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/CookieHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method org\\\\bovigo\\\\vfs\\\\visitor\\\\vfsStreamVisitor\\:\\:getStructure\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/FilesystemHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$value of function form_hidden expects array\\|string, null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/FormHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Helpers\\\\HTMLHelperTest\\:\\:\\$tracks type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/HTMLHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\InflectorHelperTest\\:\\:provideOrdinal\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/InflectorHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$num of function number_to_size expects int\\|string, float given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/NumberHelperTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/assets/image\\.jpg\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/foo/public/bar\\?baz\\=quip\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/foo/public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/public/\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/subfolder/assets/image\\.jpg\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/subfolder/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'8080\' directly on offset \'SERVER_PORT\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 11, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'invalid\\.example\\.org\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'www\\.example\\.jp\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning non\\-falsy\\-string directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\CurrentUrlTest\\:\\:createRequest\\(\\) has parameter \\$body with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\CurrentUrlTest\\:\\:provideUrlIs\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/CurrentUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'http\\://example\\.com/one\\?two\' directly on offset \'HTTP_REFERER\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAnchor\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAnchorExamples\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAnchorNoindex\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAnchorPopup\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAnchorTargetted\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAutoLinkEmail\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAutoLinkPopup\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAutoLinkUrl\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideAutolinkBoth\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideMailto\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:providePrepUrl\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideSafeMailto\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideUrlTo\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:provideUrlToThrowsOnEmptyOrMissingRoute\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\MiscUrlTest\\:\\:testUrlTo\\(\\) has parameter \\$args with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/MiscUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\SiteUrlCliTest\\:\\:provideUrls\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlCliTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'HTTP_HOST\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'REQUEST_URI\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/x/y\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/public\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/public/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/test\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/test/page\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'www\\.example\\.jp\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\SiteUrlTest\\:\\:createRequest\\(\\) has parameter \\$body with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Helpers\\\\URLHelper\\\\SiteUrlTest\\:\\:provideUrls\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Helpers/URLHelper/SiteUrlTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'test\' directly on offset \'HTTPS\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:call\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:delete\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:options\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:patch\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:populateGlobals\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:post\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:put\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:setRequestBody\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:withHeaders\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:withRoutes\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\HomeTest\\:\\:withSession\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, CodeIgniter\\\\Router\\\\RouteCollection\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$request of method CodeIgniter\\\\CodeIgniter\\:\\:setRequest\\(\\) expects CodeIgniter\\\\HTTP\\\\CLIRequest\\|CodeIgniter\\\\HTTP\\\\IncomingRequest, CodeIgniter\\\\HTTP\\\\Request given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$params of method CodeIgniter\\\\HomeTest\\:\\:populateGlobals\\(\\) expects non\\-empty\\-array\\|null, array\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$session \\(array\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/HomeTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Honeypot/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Filters\\\\Filters constructor expects Config\\\\Filters, object\\{aliases\\: array\\, globals\\: array\\\\>\\}&stdClass given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Honeypot/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$data of method CodeIgniter\\\\HTTP\\\\Message\\:\\:setBody\\(\\) expects string, null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Honeypot/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Honeypot\\\\HoneypotTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\RequestInterface\\|CodeIgniter\\\\HTTP\\\\ResponseInterface\\|string\\|null\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Honeypot/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Honeypot\\\\HoneypotTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\Response\\) does not accept CodeIgniter\\\\HTTP\\\\ResponseInterface\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Honeypot/HoneypotTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$nonsense\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$days\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$hours\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$minutes\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$months\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$seconds\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$weeks\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.protected - 'message' => '#^Access to protected property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$years\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: isset.property - 'message' => '#^Property CodeIgniter\\\\I18n\\\\TimeDifference\\:\\:\\$days \\(int\\) in isset\\(\\) is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeDifferenceTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\I18n\\\\TimeLegacy\\:\\:\\$timezoneName\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeLegacyTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\I18n\\\\TimeLegacy\\:\\:\\$weekOfWeek\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeLegacyTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\I18n\\\\TimeLegacyTest\\:\\:provideToStringDoesNotDependOnLocale\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeLegacyTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\I18n\\\\Time\\:\\:\\$timezoneName\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\I18n\\\\Time\\:\\:\\$weekOfWeek\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\I18n\\\\TimeTest\\:\\:provideToStringDoesNotDependOnLocale\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/I18n/TimeTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Images\\\\Handlers\\\\BaseHandler\\:\\:getPathname\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Images/BaseHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method org\\\\bovigo\\\\vfs\\\\vfsStreamContent\\:\\:getContent\\(\\)\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Images/GDHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$image of function imagecolorat expects GdImage, resource given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Images/GDHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$image of function imagecolorsforindex expects GdImage, resource given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Images/GDHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$filename of function file_get_contents expects string, resource given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Images/ImageMagickHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Language\\\\LanguageTest\\:\\:provideBundleUniqueKeys\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Language/LanguageTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$message of method CodeIgniter\\\\Log\\\\Handlers\\\\ChromeLoggerHandler\\:\\:handle\\(\\) expects string, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Log/Handlers/ChromeLoggerHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Log\\\\Handlers\\\\ErrorlogHandlerTest\\:\\:getMockedHandler\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Log/Handlers/ErrorlogHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Log\\\\Logger constructor expects Config\\\\Logger, CodeIgniter\\\\Test\\\\Mock\\\\MockLogger given\\.$#', - 'count' => 24, - 'path' => __DIR__ . '/tests/system/Log/LoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$level of method CodeIgniter\\\\Log\\\\Logger\\:\\:log\\(\\) expects string, int given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Log/LoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$message of method CodeIgniter\\\\Log\\\\Logger\\:\\:log\\(\\) expects string\\|Stringable, CodeIgniter\\\\Test\\\\Mock\\\\MockLogger given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Log/LoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Log/LoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.void - 'message' => '#^Result of method CodeIgniter\\\\Log\\\\Logger\\:\\:log\\(\\) \\(void\\) is used\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Log/LoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Model\\:\\:affectedRows\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/AffectedRowsTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'email\' does not exist on array\\\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'email\' does not exist on array\\{\\}\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'id\' does not exist on array\\{email\\: array\\{\'private@example\\.org\'\\}\\}\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'id\' does not exist on array\\{\\}\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$row of method CodeIgniter\\\\BaseModel\\:\\:save\\(\\) expects array\\\\|object, array\\\\> given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$row of method CodeIgniter\\\\Model\\:\\:update\\(\\) expects array\\\\|object\\|null, array\\\\> given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.defaultValue - 'message' => '#^Property CodeIgniter\\\\Models\\\\DataConverterModelTest\\:\\:\\$seed \\(array\\\\>\\|class\\-string\\\\) does not accept default value of type string\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/DataConverterModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\DeleteModelTest\\:\\:emptyPkValues\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/DeleteModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type Tests\\\\Support\\\\Models\\\\EventModel of property CodeIgniter\\\\Models\\\\EventsModelTest\\:\\:\\$model is not the same as PHPDoc type CodeIgniter\\\\Model of overridden property CodeIgniter\\\\Models\\\\LiveModelTestCase\\:\\:\\$model\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/EventsModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Model\\:\\:getLastQuery\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$id on array\\.$#', - 'count' => 8, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$name on array\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$total on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\FindModelTest\\:\\:provideAggregateAndGroupBy\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\FindModelTest\\:\\:provideFirstAggregate\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, mixed given\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, mixed given\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanOr.rightNotBoolean - 'message' => '#^Only booleans are allowed in \\|\\|, mixed given on the right side\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/FindModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property object\\:\\:\\$charset\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/GeneralModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Model\\:\\:undefinedMethodCall\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/GeneralModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$country on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$created_at on array\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:193\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/InsertModelTest\\.php\\:287\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/InsertModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$created_at on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/MiscellaneousModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/PaginateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method class@anonymous/tests/system/Models/SaveModelTest\\.php\\:288\\:\\:truncate\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$description on array\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$id on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$name on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:239\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:272\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:272\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:272\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:272\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:272\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/SaveModelTest\\.php\\:288\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/SaveModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$country on array\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$created_at on array\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$id on array\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$updated_at on array\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\TimestampModelTest\\:\\:allowDatesPrepareOneRecord\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\TimestampModelTest\\:\\:doNotAllowDatesPrepareOneRecord\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'created_at\' does not exist on array\\{\\}\\.$#', - 'count' => 6, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: offsetAccess.notFound - 'message' => '#^Offset \'id\' does not exist on array\\{country\\: \'CA\'\\}\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.defaultValue - 'message' => '#^Property CodeIgniter\\\\Models\\\\TimestampModelTest\\:\\:\\$seed \\(array\\\\>\\|class\\-string\\\\) does not accept default value of type string\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/TimestampModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$value on array\\\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Models\\\\UpdateModelTest\\:\\:provideUpdateThrowDatabaseExceptionWithoutWhereClause\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$id of method CodeIgniter\\\\Model\\:\\:update\\(\\) expects array\\|int\\|string\\|null, false\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$row of method CodeIgniter\\\\BaseModel\\:\\:save\\(\\) expects array\\\\|object, array\\\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:198\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:217\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$_options has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$country has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$created_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$deleted has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$email has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$id has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$name has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/UpdateModelTest\\.php\\:350\\:\\:\\$updated_at has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: deadCode.unreachable - 'message' => '#^Unreachable statement \\- code above always terminates\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/UpdateModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.property - 'message' => '#^Property class@anonymous/tests/system/Models/ValidationModelTest\\.php\\:245\\:\\:\\$grouptest has no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/ValidationModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$key on array\\.$#', - 'count' => 7, - 'path' => __DIR__ . '/tests/system/Models/WhenWhenNotModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$value on array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Models/WhenWhenNotModelTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'page\' directly on \\$_GET is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'page_foo\' directly on \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/ci/v4/x/y\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/index\\.php\' directly on offset \'SCRIPT_NAME\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'bar\' directly on offset \'foo\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'page\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'page_foo\' of \\$_GET is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 3 directly on offset \'page\' of \\$_GET is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning string directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.getReassignArray - 'message' => '#^Re\\-assigning arrays to \\$_GET directly is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Pager/PagerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Publisher\\\\PublisherRestrictionsTest\\:\\:provideDefaultPublicRestrictions\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Publisher/PublisherRestrictionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Publisher\\\\PublisherRestrictionsTest\\:\\:provideDestinations\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Publisher/PublisherRestrictionsTest.php', -]; -$ignoreErrors[] = [ - // identifier: ternary.shortNotAllowed - 'message' => '#^Short ternary operator is not allowed\\. Use null coalesce operator if applicable or consider using long ternary\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Publisher/PublisherSupportTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/1\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/1/edit\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/123\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/new\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'DELETE\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/1\\.1\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'PATCH\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'PUT\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 3 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 4 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'1\', \'edit\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'1\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'123\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'new\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\HTTP\\\\ResponseInterface\\:\\:pretend\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceControllerTest\\:\\:invoke\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\RESTful\\\\ResourceControllerTest\\:\\:invoke\\(\\) has parameter \\$args with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection of property CodeIgniter\\\\RESTful\\\\ResourceControllerTest\\:\\:\\$routes is not the same as PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection\\|null of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$routes\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$format of method CodeIgniter\\\\RESTful\\\\ResourceController\\:\\:setFormat\\(\\) expects \'json\'\\|\'xml\', \'Nonsense\' given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourceControllerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/create\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/delete/123\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/edit/1\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/new\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/remove/123\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/show/1\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'/work/update/123\' directly on offset \'REQUEST_URI\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'HTTP/1\\.1\' directly on offset \'SERVER_PROTOCOL\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 2 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 3 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning 4 directly on offset \'argc\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'create\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'delete\', \'123\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'edit\', \'1\', \'edit\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'new\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'remove\', \'123\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'show\', \'1\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\', \'update\', \'123\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning array\\{\'index\\.php\', \'work\'\\} directly on offset \'argv\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.phpDocType - 'message' => '#^PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection of property CodeIgniter\\\\RESTful\\\\ResourcePresenterTest\\:\\:\\$routes is not the same as PHPDoc type CodeIgniter\\\\Router\\\\RouteCollection\\|null of overridden property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$routes\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/RESTful/ResourcePresenterTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouterImprovedTest\\:\\:provideRejectTranslateUriToCamelCase\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/AutoRouterImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\AutoRouterImprovedTest\\:\\:provideTranslateUriToCamelCase\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/AutoRouterImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\BlogController\\:\\:getSomeMethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/BlogController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Index\\:\\:getIndex\\(\\) has parameter \\$p1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Index.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Mycontroller\\:\\:getSomemethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Mycontroller.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Remap\\:\\:_remap\\(\\) has parameter \\$params with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Remap.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\SubDir\\\\BlogController\\:\\:getSomeMethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/SubDir/BlogController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Subfolder\\\\Home\\:\\:getIndex\\(\\) has parameter \\$p1 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Subfolder/Home.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Subfolder\\\\Home\\:\\:getIndex\\(\\) has parameter \\$p2 with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Subfolder/Home.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\Controllers\\\\Subfolder\\\\Sub\\\\BlogController\\:\\:getSomeMethod\\(\\) has parameter \\$first with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/Controllers/Subfolder/Sub/BlogController.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\DefinedRouteCollectorTest\\:\\:createRouteCollection\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/DefinedRouteCollectorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\DefinedRouteCollectorTest\\:\\:createRouteCollection\\(\\) has parameter \\$moduleConfig with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/DefinedRouteCollectorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionReverseRouteTest\\:\\:getCollector\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionReverseRouteTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionReverseRouteTest\\:\\:getCollector\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionReverseRouteTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionReverseRouteTest\\:\\:getCollector\\(\\) has parameter \\$files with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionReverseRouteTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionReverseRouteTest\\:\\:getCollector\\(\\) has parameter \\$moduleConfig with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionReverseRouteTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionReverseRouteTest\\:\\:provideReverseRoutingDefaultNamespaceAppController\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionReverseRouteTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'adm\\.example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'dev\\.example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'doc\\.domain\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'doc\\.example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.co\\.uk\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 5, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'www\\.example\\.com\' directly on offset \'HTTP_HOST\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: class.nameCase - 'message' => '#^Class CodeIgniter\\\\Controller referenced with incorrect case\\: CodeIgniter\\\\controller\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:getCollector\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:getCollector\\(\\) has parameter \\$config with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:getCollector\\(\\) has parameter \\$files with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:getCollector\\(\\) has parameter \\$moduleConfig with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:provideNestedGroupingWorksWithRootPrefix\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:provideRouteDefaultNamespace\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:provideRoutesOptionsWithSameFromTwoRoutes\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:testNestedGroupingWorksWithRootPrefix\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:testRoutesOptionsWithSameFromTwoRoutes\\(\\) has parameter \\$options1 with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouteCollectionTest\\:\\:testRoutesOptionsWithSameFromTwoRoutes\\(\\) has parameter \\$options2 with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouteCollectionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Router\\\\RouterTest\\:\\:provideRedirectRoute\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Router/RouterTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFCookieRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Config\\\\BaseConfig\\:\\:\\$regenerate\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Config\\\\BaseConfig\\:\\:\\$tokenRandomize\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 10, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'PUT\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Security\\\\SecurityCSRFSessionRandomizeTokenTest\\:\\:createSession\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Test\\\\Mock\\\\MockSecurity constructor expects Config\\\\Security, CodeIgniter\\\\Config\\\\BaseConfig\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionRandomizeTokenTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.notFound - 'message' => '#^Access to an undefined property CodeIgniter\\\\Config\\\\BaseConfig\\:\\:\\$regenerate\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 8, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'PUT\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Security\\\\SecurityCSRFSessionTest\\:\\:createSession\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Security/SecurityCSRFSessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'GET\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Security/SecurityTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'POST\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 9, - 'path' => __DIR__ . '/tests/system/Security/SecurityTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'PUT\' directly on offset \'REQUEST_METHOD\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Security/SecurityTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\AbstractHandlerTestCase\\:\\:getInstance\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/AbstractHandlerTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\AbstractHandlerTestCase\\:\\:getInstance\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/AbstractHandlerTestCase.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\MySQLiHandlerTest\\:\\:getInstance\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/MySQLiHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\MySQLiHandlerTest\\:\\:getInstance\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/MySQLiHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\PostgreHandlerTest\\:\\:getInstance\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/PostgreHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\PostgreHandlerTest\\:\\:getInstance\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/PostgreHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\RedisHandlerTest\\:\\:getInstance\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\RedisHandlerTest\\:\\:getInstance\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\RedisHandlerTest\\:\\:provideSetSavePath\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Session\\\\Handlers\\\\Database\\\\RedisHandlerTest\\:\\:testSetSavePath\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/Handlers/Database/RedisHandlerTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'xmlhttprequest\' directly on offset \'HTTP_X_REQUESTED_WITH\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Session/SessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/SessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionTest\\:\\:getInstance\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/SessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\Session\\\\SessionTest\\:\\:getInstance\\(\\) has parameter \\$options with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/SessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property Config\\\\Cookie\\:\\:\\$samesite \\(\'\'\\|\'Lax\'\\|\'None\'\\|\'Strict\'\\) does not accept \'Invalid\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Session/SessionTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\BootstrapFCPATHTest\\:\\:correctFCPATH\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/BootstrapFCPATHTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\BootstrapFCPATHTest\\:\\:fileContents\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/BootstrapFCPATHTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\BootstrapFCPATHTest\\:\\:readOutput\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/BootstrapFCPATHTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\Test\\\\TestResponse\\:\\:ohno\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:withUri\\(\\) with incorrect case\\: withURI$#', - 'count' => 17, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: class.notFound - 'message' => '#^Class App\\\\Controllers\\\\NeverHeardOfIt not found\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 4, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:execute\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Log\\\\Logger constructor expects Config\\\\Logger, CodeIgniter\\\\Test\\\\Mock\\\\MockLogger given\\.$#', - 'count' => 15, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:\\$appConfig \\(Config\\\\App\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:\\$logger \\(Psr\\\\Log\\\\LoggerInterface\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:\\$request \\(CodeIgniter\\\\HTTP\\\\IncomingRequest\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\) in empty\\(\\) is not falsy\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\Test\\\\ControllerTestTraitTest\\:\\:\\$uri \\(string\\) does not accept CodeIgniter\\\\HTTP\\\\SiteURI\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Test/ControllerTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\DOMParserTest\\:\\:provideText\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/DOMParserTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$created_at on array\\|object\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FabricatorTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$deleted_at on array\\|object\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FabricatorTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$id on array\\|object\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FabricatorTest.php', -]; -$ignoreErrors[] = [ - // identifier: property.nonObject - 'message' => '#^Cannot access property \\$updated_at on array\\|object\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FabricatorTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\FabricatorTest\\:\\:\\$formatters type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FabricatorTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'test\' directly on offset \'HTTPS\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:call\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:delete\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:options\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:patch\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:populateGlobals\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:post\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:put\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:setRequestBody\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:withHeaders\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:withRoutes\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:withSession\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, CodeIgniter\\\\Router\\\\RouteCollection\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$request of method CodeIgniter\\\\CodeIgniter\\:\\:setRequest\\(\\) expects CodeIgniter\\\\HTTP\\\\CLIRequest\\|CodeIgniter\\\\HTTP\\\\IncomingRequest, CodeIgniter\\\\HTTP\\\\Request given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$params of method CodeIgniter\\\\Test\\\\FeatureTestAutoRoutingImprovedTest\\:\\:populateGlobals\\(\\) expects non\\-empty\\-array\\|null, array\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$session \\(array\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestAutoRoutingImprovedTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'test\' directly on offset \'HTTPS\' of \\$_SERVER is discouraged\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:call\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:delete\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:get\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:options\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:patch\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:populateGlobals\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:post\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:provideOpenCliRoutesFromHttpGot404\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:put\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:setRequestBody\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:withHeaders\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:withRoutes\\(\\) has parameter \\$routes with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:withSession\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: booleanNot.exprNotBoolean - 'message' => '#^Only booleans are allowed in a negated boolean, CodeIgniter\\\\Router\\\\RouteCollection\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$request of method CodeIgniter\\\\CodeIgniter\\:\\:setRequest\\(\\) expects CodeIgniter\\\\HTTP\\\\CLIRequest\\|CodeIgniter\\\\HTTP\\\\IncomingRequest, CodeIgniter\\\\HTTP\\\\Request given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$params of method CodeIgniter\\\\Test\\\\FeatureTestTraitTest\\:\\:populateGlobals\\(\\) expects non\\-empty\\-array\\|null, array\\|null given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\CIUnitTestCase\\:\\:\\$session \\(array\\) on left side of \\?\\? is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FeatureTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: empty.notAllowed - 'message' => '#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:assertHasFilters\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:assertNotFilter\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:assertNotHasFilters\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.callable - 'message' => '#^Method CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:getFilterCaller\\(\\) return type has no signature specified for Closure\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: if.condNotBoolean - 'message' => '#^Only booleans are allowed in an if condition, array\\ given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:\\$request \\(CodeIgniter\\\\HTTP\\\\RequestInterface\\) on left side of \\?\\?\\= is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: nullCoalesce.property - 'message' => '#^Property CodeIgniter\\\\Test\\\\FilterTestTraitTest\\:\\:\\$response \\(CodeIgniter\\\\HTTP\\\\ResponseInterface\\) on left side of \\?\\?\\= is not nullable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: variable.undefined - 'message' => '#^Variable \\$result might not be defined\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Test/FilterTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\IniTestTraitTest\\:\\:backupIniValues\\(\\) has parameter \\$keys with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/IniTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Test\\\\IniTestTraitTest\\:\\:\\$iniSettings type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/IniTestTraitTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestLoggerTest\\:\\:provideDidLogMethod\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestLoggerTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestResponseTest\\:\\:getTestResponse\\(\\) has parameter \\$headers with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestResponseTest\\:\\:getTestResponse\\(\\) has parameter \\$responseOptions with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Test\\\\TestResponseTest\\:\\:provideHttpStatusCodes\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$body of method CodeIgniter\\\\HTTP\\\\Response\\:\\:setJSON\\(\\) expects array\\|object\\|string, false given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$body of method CodeIgniter\\\\HTTP\\\\Response\\:\\:setJSON\\(\\) expects array\\|object\\|string, true given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Test/TestResponseTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Throttle\\\\ThrottleTest\\:\\:provideTokenTimeCalculationUCs\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Throttle/ThrottleTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Throttle\\\\ThrottleTest\\:\\:testTokenTimeCalculationUCs\\(\\) has parameter \\$checkInputs with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Throttle/ThrottleTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\CreditCardRulesTest\\:\\:calculateLuhnChecksum\\(\\) has parameter \\$digits with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\CreditCardRulesTest\\:\\:provideValidCCNumber\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\CreditCardRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Validation\\\\DatabaseRelatedRulesTest\\:\\:createRules\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/DatabaseRelatedRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\DatabaseRelatedRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/DatabaseRelatedRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FileRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\FileRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FileRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.nameCase - 'message' => '#^Call to method PHPUnit\\\\Framework\\\\Assert\\:\\:assertSame\\(\\) with incorrect case\\: assertsame$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:alphaNumericProvider\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideAlpha\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideAlphaDash\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideAlphaNumericPunct\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideAlphaSpace\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideBase64\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideDecimal\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideHex\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideInteger\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideInvalidIntegerType\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideJson\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideNatural\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideNaturalNoZero\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideNumeric\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideString\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideTimeZone\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideValidDate\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideValidEmail\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideValidEmails\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideValidIP\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:provideValidUrl\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\FormatRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideDiffers\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideEquals\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideExactLength\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideFieldExists\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideGreaterThan\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideGreaterThanEqual\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideIfExist\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideInList\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideLessThan\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideLessThanEqual\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideMatches\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideMatchesNestedCases\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideMinLengthCases\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:providePermitEmpty\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequired\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWith\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWithAndOtherRuleWithValueZero\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWithAndOtherRules\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWithout\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWithoutMultiple\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:provideRequiredWithoutMultipleWithoutFields\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testDiffers\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testDiffersNested\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testEquals\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testFieldExists\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testFieldExists\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testIfExist\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testIfExist\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testMatches\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testMatchesNested\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testPermitEmpty\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testPermitEmpty\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testRequired\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testRequiredWithAndOtherRuleWithValueZero\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testRequiredWithAndOtherRules\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\RulesTest\\:\\:testRequiredWithoutMultipleWithoutFields\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\RulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\CreditCardRulesTest\\:\\:calculateLuhnChecksum\\(\\) has parameter \\$digits with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\CreditCardRulesTest\\:\\:provideValidCCNumber\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\CreditCardRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/CreditCardRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\DatabaseRelatedRulesTest\\:\\:createRules\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/DatabaseRelatedRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/DatabaseRelatedRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\DatabaseRelatedRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/DatabaseRelatedRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/FileRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\FileRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/FileRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRulesTest\\:\\:provideAlphaSpace\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRulesTest\\:\\:provideInvalidIntegerType\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\FormatRulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/FormatRulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideDiffers\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideGreaterThanEqualStrict\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideGreaterThanStrict\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideLessEqualThanStrict\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideLessThanStrict\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:provideMatches\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:providePermitEmptyStrict\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:testDiffers\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:testMatches\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:testPermitEmptyStrict\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:testPermitEmptyStrict\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\RulesTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/RulesTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\StrictRules\\\\ValidationTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/StrictRules/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccess - 'message' => '#^Accessing offset \'CONTENT_TYPE\' directly on \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: codeigniter.superglobalAccessAssign - 'message' => '#^Assigning \'application/json\' directly on offset \'CONTENT_TYPE\' of \\$_SERVER is discouraged\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:placeholderReplacementResultDetermination\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideCanValidatetArrayData\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideIfExistRuleWithAsterisk\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideIsIntWithInvalidTypeData\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideRulesForArrayField\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideRulesSetup\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideSetRuleRulesFormat\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideSplittingOfComplexStringRules\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:provideValidationOfArrayData\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:rule1\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:rule2\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:rule2\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testIfExistRuleWithAsterisk\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testIfExistRuleWithAsterisk\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testRulesForArrayField\\(\\) has parameter \\$body with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testRulesForArrayField\\(\\) has parameter \\$results with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testRulesForArrayField\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testRulesSetup\\(\\) has parameter \\$errors with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testSplittingOfComplexStringRules\\(\\) has parameter \\$expected with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testValidationOfArrayData\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:testValidationOfArrayData\\(\\) has parameter \\$rules with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$config of class CodeIgniter\\\\Validation\\\\Validation constructor expects Config\\\\Validation, stdClass given\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#3 \\$errors of method CodeIgniter\\\\Validation\\\\Validation\\:\\:check\\(\\) expects array\\, array\\ given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Property CodeIgniter\\\\Validation\\\\ValidationTest\\:\\:\\$config type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/Validation/ValidationTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.return - 'message' => '#^Method CodeIgniter\\\\View\\\\ParserPluginTest\\:\\:setHints\\(\\) has no return type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/ParserPluginTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.parameter - 'message' => '#^Method CodeIgniter\\\\View\\\\ParserPluginTest\\:\\:setHints\\(\\) has parameter \\$output with no type specified\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/ParserPluginTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\View\\\\ParserPluginTest\\:\\:\\$validator \\(CodeIgniter\\\\Validation\\\\Validation\\) does not accept CodeIgniter\\\\Validation\\\\ValidationInterface\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/ParserPluginTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\ParserTest\\:\\:provideEscHandling\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/ParserTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$context of method CodeIgniter\\\\View\\\\Parser\\:\\:setData\\(\\) expects \'attr\'\\|\'css\'\\|\'html\'\\|\'js\'\\|\'raw\'\\|\'url\'\\|null, \'unknown\' given\\.$#', - 'count' => 3, - 'path' => __DIR__ . '/tests/system/View/ParserTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\Table\\:\\:compileTemplate\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\Table\\:\\:defaultTemplate\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\Table\\:\\:prepArgs\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\Table\\:\\:setFromArray\\(\\)\\.$#', - 'count' => 2, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: method.notFound - 'message' => '#^Call to an undefined method CodeIgniter\\\\View\\\\Table\\:\\:setFromDBResult\\(\\)\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\DBResultDummy\\:\\:getFieldNames\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\DBResultDummy\\:\\:getResultArray\\(\\) return type has no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\TableTest\\:\\:orderedColumnUsecases\\(\\) return type has no value type specified in iterable type iterable\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\TableTest\\:\\:testAddRowAndGenerateOrderedColumns\\(\\) has parameter \\$heading with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\TableTest\\:\\:testAddRowAndGenerateOrderedColumns\\(\\) has parameter \\$row with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\TableTest\\:\\:testGenerateOrderedColumns\\(\\) has parameter \\$heading with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: missingType.iterableValue - 'message' => '#^Method CodeIgniter\\\\View\\\\TableTest\\:\\:testGenerateOrderedColumns\\(\\) has parameter \\$row with no value type specified in iterable type array\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#1 \\$array of method CodeIgniter\\\\View\\\\Table\\:\\:makeColumns\\(\\) expects array\\, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: argument.type - 'message' => '#^Parameter \\#2 \\$columnLimit of method CodeIgniter\\\\View\\\\Table\\:\\:makeColumns\\(\\) expects int, string given\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; -$ignoreErrors[] = [ - // identifier: assign.propertyType - 'message' => '#^Property CodeIgniter\\\\View\\\\Table\\:\\:\\$function \\(\\(callable\\(\\)\\: mixed\\)\\|null\\) does not accept \'ticklemyfancy\'\\.$#', - 'count' => 1, - 'path' => __DIR__ . '/tests/system/View/TableTest.php', -]; - -return ['parameters' => ['ignoreErrors' => $ignoreErrors]]; diff --git a/phpstan-bootstrap.php b/phpstan-bootstrap.php index 99acf96227fe..0f45bf0cb559 100644 --- a/phpstan-bootstrap.php +++ b/phpstan-bootstrap.php @@ -1,7 +1,18 @@ isFile() && $file->getExtension() === 'php') { + require_once $file->getRealPath(); + } + } } diff --git a/phpstan.neon.dist b/phpstan.neon.dist index c67aa93fcb04..e6cc288cc678 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,44 +1,50 @@ -services: - - - class: Utils\PHPStan\CheckUseStatementsAfterLicenseRule - tags: - - phpstan.rules.rule - includes: - - phpstan-baseline.php + - utils/phpstan-baseline/loader.neon parameters: - phpVersion: 80100 - tmpDir: build/phpstan - level: 6 - bootstrapFiles: - - phpstan-bootstrap.php - paths: - - admin/starter/tests - - app - - system - - tests - - utils/src/PHPStan - excludePaths: - - app/Views/errors/cli/* - - app/Views/errors/html/* - - system/Commands/Generators/Views/* - - system/Debug/Toolbar/Views/toolbar.tpl.php - - system/Images/Handlers/GDHandler.php - - system/Test/Filters/CITestStreamFilter.php - - system/ThirdParty/* - - system/Validation/Views/single.php - - tests/system/View/Views/* - scanDirectories: - - system/Helpers - ignoreErrors: - - - identifier: missingType.generics - checkMissingCallableSignature: true - treatPhpDocTypesAsCertain: false - strictRules: - allRules: false - disallowedLooseComparison: true - booleansInConditions: true - disallowedConstructs: true - matchingInheritedMethodNames: true + phpVersion: 80100 + tmpDir: build/phpstan + level: 6 + bootstrapFiles: + - phpstan-bootstrap.php + paths: + - admin/starter/tests + - app + - system + - tests + excludePaths: + analyseAndScan: + - app/Views/errors/cli/* + - app/Views/errors/html/* + - system/Commands/Generators/Views/* + - system/Debug/Toolbar/Views/toolbar.tpl.php + - system/Images/Handlers/GDHandler.php + - system/ThirdParty/* + - system/Validation/Views/single.php + - tests/system/View/Views/* + analyse: + - tests/_support/* + scanDirectories: + - system/Helpers + ignoreErrors: + - + identifier: missingType.generics + checkMissingCallableSignature: true + treatPhpDocTypesAsCertain: false + strictRules: + allRules: false + disallowedLooseComparison: true + booleansInConditions: true + disallowedBacktick: true + disallowedEmpty: true + disallowedImplicitArrayCreation: true + disallowedShortTernary: true + matchingInheritedMethodNames: true + codeigniter: + additionalServices: + - AfterAutoloadModule\Config\Services + additionalModelNamespaces: + - Tests\Support\Models + checkArgumentTypeOfModel: false + shipmonkBaselinePerIdentifier: + directory: %currentWorkingDirectory% diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 7464323e4078..0e5c9e24f82c 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -11,7 +11,6 @@ failOnWarning="true" cacheDirectory="build/.phpunit.cache"> diff --git a/preload.php b/preload.php index 755df5e4a4ed..288b30b4ef48 100644 --- a/preload.php +++ b/preload.php @@ -9,6 +9,9 @@ * the LICENSE file that was distributed with this source code. */ +use CodeIgniter\Boot; +use Config\Paths; + /* *--------------------------------------------------------------- * Sample file for Preloading @@ -54,6 +57,7 @@ class preload '/system/Config/Routes.php', '/system/Language/', '/system/bootstrap.php', + '/system/util_bootstrap.php', '/system/rewrite.php', '/Views/', // Errors occur. @@ -69,10 +73,10 @@ public function __construct() private function loadAutoloader(): void { - $paths = new Config\Paths(); + $paths = new Paths(); require rtrim($paths->systemDirectory, '\\/ ') . DIRECTORY_SEPARATOR . 'Boot.php'; - CodeIgniter\Boot::preload($paths); + Boot::preload($paths); } /** @@ -86,7 +90,7 @@ public function load(): void $phpFiles = new RegexIterator( $fullTree, '/.+((? $file) { @@ -97,7 +101,9 @@ public function load(): void } require_once $file[0]; - echo 'Loaded: ' . $file[0] . "\n"; + // Uncomment only for debugging (to inspect which files are included). + // Never use this in production - preload scripts must not generate output. + // echo 'Loaded: ' . $file[0] . "\n"; } } } diff --git a/psalm-autoload.php b/psalm-autoload.php new file mode 100644 index 000000000000..852ef4d6aab3 --- /dev/null +++ b/psalm-autoload.php @@ -0,0 +1,50 @@ +isFile()) { + continue; + } + + if (in_array($file->getPath(), $excludeDirs, true)) { + continue; + } + + if ($file->getExtension() !== 'php') { + continue; + } + + if (in_array($file->getPathname(), $excludeFiles, true)) { + continue; + } + + require_once $file->getPathname(); + } +} diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 53d1b6ce876a..160ba4d97cd8 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,5 +1,5 @@ - + |parser_callable_string|parser_callable>]]> @@ -10,28 +10,6 @@ - - - - - - - - memcached]]> - memcached]]> - memcached]]> - memcached]]> - memcached]]> - memcached]]> - - - - - - - - - |parser_callable_string|parser_callable>]]> @@ -39,11 +17,6 @@ ]]> - - - db->transStatus]]> - - @@ -53,6 +26,17 @@ + + + + + + + + + + + @@ -82,9 +66,14 @@ - + + + + + + |parser_callable_string|parser_callable>]]> @@ -112,11 +101,6 @@ - - - - - @@ -140,12 +124,64 @@ + + attributes]]> + casts]]> + casts]]> + casts]]> + casts]]> + + + + country]]> + created_at]]> + deleted]]> + email]]> + name]]> + country]]> + created_at]]> + deleted]]> + email]]> + name]]> + + + + + country]]> + created_at]]> + created_at]]> + deleted]]> + email]]> + name]]> + name]]> + name]]> + name]]> + + + + + country]]> + deleted]]> + email]]> + id]]> + name]]> + country]]> + country]]> + deleted]]> + id]]> + name]]> + country]]> + deleted]]> + id]]> + name]]> + + diff --git a/psalm.xml b/psalm.xml index 45242620028f..d6033313a621 100644 --- a/psalm.xml +++ b/psalm.xml @@ -5,9 +5,10 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" - autoloader="psalm_autoload.php" + autoloader="psalm-autoload.php" cacheDirectory="build/psalm/" errorBaseline="psalm-baseline.xml" + ensureOverrideAttribute="false" findUnusedBaselineEntry="false" findUnusedCode="false" > diff --git a/psalm_autoload.php b/psalm_autoload.php deleted file mode 100644 index b973cc88bc7d..000000000000 --- a/psalm_autoload.php +++ /dev/null @@ -1,47 +0,0 @@ -systemDirectory . '/Boot.php'; -exit(CodeIgniter\Boot::bootWeb($paths)); +exit(Boot::bootWeb($paths)); diff --git a/rector.php b/rector.php index 64abc9a73541..23d5de95427f 100644 --- a/rector.php +++ b/rector.php @@ -12,14 +12,10 @@ */ use Rector\Caching\ValueObject\Storage\FileCacheStorage; -use Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector; use Rector\CodeQuality\Rector\Empty_\SimplifyEmptyCheckOnEmptyArrayRector; -use Rector\CodeQuality\Rector\Expression\InlineIfToExplicitIfRector; -use Rector\CodeQuality\Rector\Foreach_\UnusedForeachValueToArrayKeysRector; -use Rector\CodeQuality\Rector\FuncCall\ChangeArrayPushToArrayAssignRector; +use Rector\CodeQuality\Rector\FuncCall\CompactToVariablesRector; use Rector\CodeQuality\Rector\FunctionLike\SimplifyUselessVariableRector; -use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector; -use Rector\CodeQuality\Rector\If_\ShortenElseIfRector; +use Rector\CodeQuality\Rector\Isset_\IssetOnPropertyObjectToPropertyExistsRector; use Rector\CodeQuality\Rector\Ternary\TernaryEmptyArrayArrayDimFetchToCoalesceRector; use Rector\CodingStyle\Rector\ClassMethod\FuncGetArgsToVariadicParamRector; use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector; @@ -29,25 +25,25 @@ use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedConstructorParamRector; use Rector\DeadCode\Rector\ClassMethod\RemoveUnusedPrivateMethodRector; use Rector\DeadCode\Rector\If_\UnwrapFutureCompatibleIfPhpVersionRector; +use Rector\DeadCode\Rector\MethodCall\RemoveNullArgOnNullDefaultParamRector; use Rector\EarlyReturn\Rector\Foreach_\ChangeNestedForeachIfsToEarlyContinueRector; use Rector\EarlyReturn\Rector\If_\ChangeIfElseValueAssignToEarlyReturnRector; use Rector\EarlyReturn\Rector\If_\RemoveAlwaysElseRector; use Rector\EarlyReturn\Rector\Return_\PreparedValueToEarlyReturnRector; -use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector; use Rector\Php70\Rector\FuncCall\RandomFunctionRector; use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; -use Rector\Php80\Rector\FunctionLike\MixedTypeRector; use Rector\Php81\Rector\FuncCall\NullToStrictStringFuncCallArgRector; use Rector\PHPUnit\CodeQuality\Rector\Class_\YieldDataProviderRector; -use Rector\PHPUnit\Set\PHPUnitSetList; +use Rector\PHPUnit\CodeQuality\Rector\FuncCall\AssertFuncCallToPHPUnitAssertRector; +use Rector\PHPUnit\CodeQuality\Rector\StmtsAwareInterface\DeclareStrictTypesTestsRector; +use Rector\Privatization\Rector\Class_\FinalizeTestCaseClassRector; use Rector\Privatization\Rector\Property\PrivatizeFinalClassPropertyRector; use Rector\Strict\Rector\Empty_\DisallowedEmptyRuleFixerRector; -use Rector\Strict\Rector\If_\BooleanInIfConditionRuleFixerRector; +use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; use Rector\TypeDeclaration\Rector\Closure\AddClosureVoidReturnTypeWhereNoReturnRector; use Rector\TypeDeclaration\Rector\Closure\ClosureReturnTypeRector; -use Rector\TypeDeclaration\Rector\Empty_\EmptyOnNullableObjectToInstanceOfRector; use Rector\TypeDeclaration\Rector\Function_\AddFunctionVoidReturnTypeWhereNoReturnRector; use Rector\TypeDeclaration\Rector\Property\TypedPropertyFromAssignsRector; use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector; @@ -57,16 +53,13 @@ return RectorConfig::configure() ->withPhpSets(php81: true) - ->withPreparedSets(deadCode: true) - ->withSets([ - PHPUnitSetList::PHPUNIT_CODE_QUALITY, - PHPUnitSetList::PHPUNIT_100, - ]) + ->withPreparedSets(deadCode: true, instanceOf: true, phpunitCodeQuality: true) + ->withComposerBased(phpunit: true) ->withParallel(120, 8, 10) ->withCache( // Github action cache or local is_dir('/tmp') ? '/tmp/rector' : null, - FileCacheStorage::class + FileCacheStorage::class, ) // paths to refactor; solid alternative to CLI arguments ->withPaths([ @@ -77,12 +70,13 @@ ]) // do you need to include constants, class aliases or custom autoloader? files listed will be executed ->withBootstrapFiles([ - __DIR__ . '/system/Test/bootstrap.php', + __DIR__ . '/phpstan-bootstrap.php', ]) ->withPHPStanConfigs([ __DIR__ . '/phpstan.neon.dist', __DIR__ . '/vendor/codeigniter/phpstan-codeigniter/extension.neon', __DIR__ . '/vendor/phpstan/phpstan-strict-rules/rules.neon', + __DIR__ . '/vendor/shipmonk/phpstan-baseline-per-identifier/extension.neon', ]) // is there a file you need to skip? ->withSkip([ @@ -133,7 +127,6 @@ __DIR__ . '/system/Validation/Views', __DIR__ . '/system/View/Parser.php', __DIR__ . '/tests/system/Debug/ExceptionsTest.php', - __DIR__ . '/tests/system/View/Views', ], // use mt_rand instead of random_int on purpose on non-cryptographically random @@ -151,7 +144,6 @@ __DIR__ . '/system/Security/Security.php', __DIR__ . '/system/Session/Session.php', ], - MixedTypeRector::class, ReturnNeverTypeRector::class => [ __DIR__ . '/system/Cache/Handlers/BaseHandler.php', @@ -171,6 +163,30 @@ // Unnecessary (string) is inserted NullToStrictStringFuncCallArgRector::class, + + CompactToVariablesRector::class, + + // possibly isset() on purpose, on updated Config classes property accross versions + IssetOnPropertyObjectToPropertyExistsRector::class, + + AssertFuncCallToPHPUnitAssertRector::class => [ + // use $this inside static closure + __DIR__ . '/tests/system/AutoReview/FrameworkCodeTest.php', + ], + + // some tests extended by other tests + FinalizeTestCaseClassRector::class, + + DeclareStrictTypesTestsRector::class => [ + __DIR__ . '/tests/system/Debug/ExceptionsTest.php', + ], + + RemoveNullArgOnNullDefaultParamRector::class => [ + // skip form query usage, easier to read + __DIR__ . '/system/Model.php', + __DIR__ . '/tests/system/Database', + __DIR__ . '/tests/system/Models', + ], ]) // auto import fully qualified class names ->withImportNames(removeUnusedImports: true) @@ -183,31 +199,20 @@ CountArrayToEmptyArrayComparisonRector::class, ChangeNestedForeachIfsToEarlyContinueRector::class, ChangeIfElseValueAssignToEarlyReturnRector::class, - InlineIfToExplicitIfRector::class, PreparedValueToEarlyReturnRector::class, - ShortenElseIfRector::class, - UnusedForeachValueToArrayKeysRector::class, - ChangeArrayPushToArrayAssignRector::class, RemoveErrorSuppressInTryCatchStmtsRector::class, FuncGetArgsToVariadicParamRector::class, MakeInheritedMethodVisibilitySameAsParentRector::class, SimplifyEmptyCheckOnEmptyArrayRector::class, TernaryEmptyArrayArrayDimFetchToCoalesceRector::class, - EmptyOnNullableObjectToInstanceOfRector::class, DisallowedEmptyRuleFixerRector::class, PrivatizeFinalClassPropertyRector::class, - CompleteDynamicPropertiesRector::class, - BooleanInIfConditionRuleFixerRector::class, VersionCompareFuncCallToConstantRector::class, AddClosureVoidReturnTypeWhereNoReturnRector::class, AddFunctionVoidReturnTypeWhereNoReturnRector::class, AddMethodCallBasedStrictParamTypeRector::class, TypedPropertyFromAssignsRector::class, ClosureReturnTypeRector::class, - FlipTypeControlToUseExclusiveTypeRector::class, - ]) - ->withConfiguredRule(StringClassNameToClassConstantRector::class, [ - // keep '\\' prefix string on string '\Foo\Bar' - StringClassNameToClassConstantRector::SHOULD_KEEP_PRE_SLASH => true, + AddArrowFunctionReturnTypeRector::class, ]) - ->withCodeQualityLevel(24); + ->withCodeQualityLevel(61); diff --git a/spark b/spark index 992d044c9ee2..e7871ea8e682 100755 --- a/spark +++ b/spark @@ -10,6 +10,9 @@ * the LICENSE file that was distributed with this source code. */ +use CodeIgniter\Boot; +use Config\Paths; + /* * -------------------------------------------------------------------- * CODEIGNITER COMMAND-LINE TOOLS @@ -40,7 +43,7 @@ if (version_compare(PHP_VERSION, $minPhpVersion, '<')) { $message = sprintf( 'Your PHP version must be %s or higher to run CodeIgniter. Current version: %s', $minPhpVersion, - PHP_VERSION + PHP_VERSION, ); exit($message); @@ -76,9 +79,9 @@ chdir(FCPATH); require FCPATH . '../app/Config/Paths.php'; // ^^^ Change this line if you move your application folder -$paths = new Config\Paths(); +$paths = new Paths(); // LOAD THE FRAMEWORK BOOTSTRAP FILE require $paths->systemDirectory . '/Boot.php'; -exit(CodeIgniter\Boot::bootSpark($paths)); +exit(Boot::bootSpark($paths)); diff --git a/system/API/ResponseTrait.php b/system/API/ResponseTrait.php index 01ce42860b32..f64cc671a514 100644 --- a/system/API/ResponseTrait.php +++ b/system/API/ResponseTrait.php @@ -13,7 +13,9 @@ namespace CodeIgniter\API; +use CodeIgniter\Format\Format; use CodeIgniter\Format\FormatterInterface; +use CodeIgniter\HTTP\CLIRequest; use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\ResponseInterface; @@ -22,8 +24,10 @@ * consistent HTTP responses under a variety of common * situations when working as an API. * - * @property bool $stringAsHtml Whether to treat string data as HTML in JSON response. - * Setting `true` is only for backward compatibility. + * @property CLIRequest|IncomingRequest $request + * @property ResponseInterface $response + * @property bool $stringAsHtml Whether to treat string data as HTML in JSON response. + * Setting `true` is only for backward compatibility. */ trait ResponseTrait { @@ -69,8 +73,7 @@ trait ResponseTrait * Either 'json' or 'xml'. If null is set, it will be determined through * content negotiation. * - * @var string|null - * @phpstan-var 'html'|'json'|'xml'|null + * @var 'html'|'json'|'xml'|null */ protected $format = 'json'; @@ -85,7 +88,7 @@ trait ResponseTrait * Provides a single, simple method to return an API response, formatted * to match the requested format, with proper content-type and status code. * - * @param array|string|null $data + * @param array|string|null $data * * @return ResponseInterface */ @@ -119,9 +122,9 @@ protected function respond($data = null, ?int $status = null, string $message = /** * Used for generic failures that no custom methods exist for. * - * @param array|string $messages - * @param int $status HTTP status code - * @param string|null $code Custom, API-specific, error code + * @param array|string $messages + * @param int $status HTTP status code + * @param string|null $code Custom, API-specific, error code * * @return ResponseInterface */ @@ -147,7 +150,7 @@ protected function fail($messages, int $status = 400, ?string $code = null, stri /** * Used after successfully creating a new resource. * - * @param array|string|null $data + * @param array|string|null $data * * @return ResponseInterface */ @@ -159,7 +162,7 @@ protected function respondCreated($data = null, string $message = '') /** * Used after a resource has been successfully deleted. * - * @param array|string|null $data + * @param array|string|null $data * * @return ResponseInterface */ @@ -171,7 +174,7 @@ protected function respondDeleted($data = null, string $message = '') /** * Used after a resource has been successfully updated. * - * @param array|string|null $data + * @param array|string|null $data * * @return ResponseInterface */ @@ -224,22 +227,10 @@ protected function failNotFound(string $description = 'Not Found', ?string $code return $this->fail($description, $this->codes['resource_not_found'], $code, $message); } - /** - * Used when the data provided by the client cannot be validated. - * - * @return ResponseInterface - * - * @deprecated Use failValidationErrors instead - */ - protected function failValidationError(string $description = 'Bad Request', ?string $code = null, string $message = '') - { - return $this->fail($description, $this->codes['invalid_data'], $code, $message); - } - /** * Used when the data provided by the client cannot be validated on one or more fields. * - * @param list|string $errors + * @param array|string $errors * * @return ResponseInterface */ @@ -300,15 +291,17 @@ protected function failServerError(string $description = 'Internal Server Error' * Handles formatting a response. Currently, makes some heavy assumptions * and needs updating! :) * - * @param array|string|null $data + * @param array|string|null $data * * @return string|null */ protected function format($data = null) { + /** @var Format $format */ $format = service('format'); - $mime = ($this->format === null) ? $format->getConfig()->supportedResponseFormats[0] + $mime = $this->format === null + ? $format->getConfig()->supportedResponseFormats[0] : "application/{$this->format}"; // Determine correct response type through content negotiation if not explicitly declared @@ -319,21 +312,17 @@ protected function format($data = null) $mime = $this->request->negotiate( 'media', $format->getConfig()->supportedResponseFormats, - false + false, ); } $this->response->setContentType($mime); // if we don't have a formatter, make one - if (! isset($this->formatter)) { - // if no formatter, use the default - $this->formatter = $format->getFormatter($mime); - } + $this->formatter ??= $format->getFormatter($mime); $asHtml = $this->stringAsHtml ?? false; - // Returns as HTML. if ( ($mime === 'application/json' && $asHtml && is_string($data)) || ($mime !== 'application/json' && is_string($data)) @@ -351,6 +340,7 @@ protected function format($data = null) if ($mime !== 'application/json') { // Recursively convert objects into associative arrays // Conversion not required for JSONFormatter + /** @var array|string|null $data */ $data = json_decode(json_encode($data), true); } @@ -360,14 +350,13 @@ protected function format($data = null) /** * Sets the format the response should be in. * - * @param string|null $format Response format - * @phpstan-param 'json'|'xml' $format + * @param 'json'|'xml' $format Response format * * @return $this */ protected function setResponseFormat(?string $format = null) { - $this->format = ($format === null) ? null : strtolower($format); + $this->format = $format === null ? null : strtolower($format); return $this; } diff --git a/system/Autoloader/Autoloader.php b/system/Autoloader/Autoloader.php index b338027c9c8a..65c535e8611e 100644 --- a/system/Autoloader/Autoloader.php +++ b/system/Autoloader/Autoloader.php @@ -14,16 +14,16 @@ namespace CodeIgniter\Autoloader; use CodeIgniter\Exceptions\ConfigException; +use CodeIgniter\Exceptions\InvalidArgumentException; +use CodeIgniter\Exceptions\RuntimeException; use Composer\Autoload\ClassLoader; use Composer\InstalledVersions; use Config\Autoload; use Config\Kint as KintConfig; use Config\Modules; -use InvalidArgumentException; -use Kint; +use Kint\Kint; use Kint\Renderer\CliRenderer; use Kint\Renderer\RichRenderer; -use RuntimeException; /** * An autoloader that uses both PSR4 autoloading, and traditional classmaps. @@ -67,21 +67,21 @@ class Autoloader /** * Stores namespaces as key, and path as values. * - * @var array> + * @var array> */ protected $prefixes = []; /** * Stores class name as key, and path as values. * - * @var array + * @var array */ protected $classmap = []; /** * Stores files as a list. * - * @var list + * @var list */ protected $files = []; @@ -89,7 +89,7 @@ class Autoloader * Stores helper list. * Always load the URL helper, it should be used in most apps. * - * @var list + * @var list */ protected $helpers = ['url']; @@ -123,7 +123,7 @@ public function initialize(Autoload $config, Modules $modules) $this->files = $config->files; } - if (isset($config->helpers)) { + if ($config->helpers !== []) { $this->helpers = [...$this->helpers, ...$config->helpers]; } @@ -147,36 +147,35 @@ private function loadComposerAutoloader(Modules $modules): void // Should we load through Composer's namespaces, also? if ($modules->discoverInComposer) { - // @phpstan-ignore-next-line - $this->loadComposerNamespaces($composer, $modules->composerPackages ?? []); + $composerPackages = $modules->composerPackages; + $this->loadComposerNamespaces($composer, $composerPackages ?? []); } unset($composer); } /** - * Register the loader with the SPL autoloader stack. + * Register the loader with the SPL autoloader stack + * in the following order: + * + * 1. Classmap loader + * 2. PSR-4 autoloader + * 3. Non-class files * * @return void */ public function register() { - // Register classmap loader for the files in our class map. spl_autoload_register($this->loadClassmap(...), true); - - // Register the PSR-4 autoloader. spl_autoload_register($this->loadClass(...), true); - // Load our non-class files foreach ($this->files as $file) { $this->includeFile($file); } } /** - * Unregister autoloader. - * - * This method is for testing. + * Unregisters the autoloader from the SPL autoload stack. */ public function unregister(): void { @@ -187,7 +186,7 @@ public function unregister(): void /** * Registers namespaces with the autoloader. * - * @param array|string>|string $namespace + * @param array|non-empty-string>|non-empty-string $namespace * * @return $this */ @@ -219,8 +218,7 @@ public function addNamespace($namespace, ?string $path = null) * * If a prefix param is set, returns only paths to the given prefix. * - * @return array>|list - * @phpstan-return ($prefix is null ? array> : list) + * @return ($prefix is null ? array> : list) */ public function getNamespace(?string $prefix = null) { @@ -248,6 +246,8 @@ public function removeNamespace(string $namespace) /** * Load a class using available class mapping. * + * @param class-string $class The fully qualified class name. + * * @internal For `spl_autoload_register` use. */ public function loadClassmap(string $class): void @@ -262,9 +262,9 @@ public function loadClassmap(string $class): void /** * Loads the class file for a given class name. * - * @internal For `spl_autoload_register` use. + * @param class-string $class The fully qualified class name. * - * @param string $class The fully qualified class name. + * @internal For `spl_autoload_register` use. */ public function loadClass(string $class): void { @@ -274,9 +274,9 @@ public function loadClass(string $class): void /** * Loads the class file for a given class name. * - * @param string $class The fully-qualified class name + * @param class-string $class The fully qualified class name. * - * @return false|string The mapped file name on success, or boolean false on fail + * @return false|non-empty-string The mapped file name on success, or boolean false on fail */ protected function loadInNamespace(string $class) { @@ -294,21 +294,20 @@ protected function loadInNamespace(string $class) $filePath = $directory . $relativeClassPath . '.php'; $filename = $this->includeFile($filePath); - if ($filename) { + if ($filename !== false) { return $filename; } } } } - // never found a mapped file return false; } /** * A central way to include a file. Split out primarily for testing purposes. * - * @return false|string The filename on success, false if the file is not loaded + * @return false|non-empty-string The filename on success, false if the file is not loaded */ protected function includeFile(string $file) { @@ -347,7 +346,7 @@ public function sanitizeFilename(string $filename): string throw new InvalidArgumentException( 'The file path contains special characters "' . $chars - . '" that are not allowed: "' . $filename . '"' + . '" that are not allowed: "' . $filename . '"', ); } if ($result === false) { @@ -386,7 +385,7 @@ private function loadComposerNamespaces(ClassLoader $composer, array $composerPa throw new RuntimeException( 'Your Composer version is too old.' . ' Please update Composer (run `composer self-update`) to v2.0.14 or later' - . ' and remove your vendor/ directory, and run `composer update`.' + . ' and remove your vendor/ directory, and run `composer update`.', ); } // This method requires Composer 2.0.14 or later. @@ -547,7 +546,7 @@ private function configureKint(): void RichRenderer::$theme = $config->richTheme; RichRenderer::$folder = $config->richFolder; - RichRenderer::$sort = $config->richSort; + if (isset($config->richObjectPlugins) && is_array($config->richObjectPlugins)) { RichRenderer::$value_plugins = $config->richObjectPlugins; } diff --git a/system/Autoloader/FileLocator.php b/system/Autoloader/FileLocator.php index 8e2564e00941..f67708a4e836 100644 --- a/system/Autoloader/FileLocator.php +++ b/system/Autoloader/FileLocator.php @@ -44,7 +44,7 @@ public function __construct(Autoloader $autoloader) * Attempts to locate a file by examining the name for a namespace * and looking through the PSR-4 namespaced files that we know about. * - * @param string $file The relative file path or namespaced file to + * @param non-empty-string $file The relative file path or namespaced file to * locate. If not namespaced, search in the app * folder. * @param non-empty-string|null $folder The folder within the namespace that we should @@ -53,7 +53,7 @@ public function __construct(Autoloader $autoloader) * folder. * @param string $ext The file extension the file should have. * - * @return false|string The path to the file, or false if not found. + * @return false|non-empty-string The path to the file, or false if not found. */ public function locateFile(string $file, ?string $folder = null, string $ext = 'php') { @@ -156,9 +156,11 @@ public function getClassname(string $file): string $dlm = false; } - if (($tokens[$i - 2][0] === T_CLASS || (isset($tokens[$i - 2][1]) && $tokens[$i - 2][1] === 'phpclass')) + if ( + ($tokens[$i - 2][0] === T_CLASS || (isset($tokens[$i - 2][1]) && $tokens[$i - 2][1] === 'phpclass')) && $tokens[$i - 1][0] === T_WHITESPACE - && $token[0] === T_STRING) { + && $token[0] === T_STRING + ) { $className = $token[1]; break; } @@ -184,7 +186,7 @@ public function getClassname(string $file): string * 'app/Modules/bar/Config/Routes.php', * ] * - * @return list + * @return list */ public function search(string $path, string $ext = 'php', bool $prioritizeApp = true): array { @@ -213,7 +215,6 @@ public function search(string $path, string $ext = 'php', bool $prioritizeApp = $foundPaths = [...$foundPaths, ...$appPaths]; } - // Remove any duplicates return array_values(array_unique($foundPaths)); } @@ -236,13 +237,12 @@ protected function ensureExt(string $path, string $ext): string /** * Return the namespace mappings we know about. * - * @return array> + * @return list */ protected function getNamespaces() { $namespaces = []; - // Save system for last $system = []; foreach ($this->autoloader->getNamespace() as $prefix => $paths) { @@ -263,15 +263,10 @@ protected function getNamespaces() } } + // Save system for last return array_merge($namespaces, $system); } - /** - * Find the qualified name of a file according to - * the namespace of the first matched namespace path. - * - * @return false|string The qualified name or false if the path is not found - */ public function findQualifiedNameFromPath(string $path) { $resolvedPath = realpath($path); @@ -295,23 +290,23 @@ public function findQualifiedNameFromPath(string $path) str_replace( '/', '\\', - mb_substr($path, mb_strlen($namespace['path'])) + mb_substr($path, mb_strlen($namespace['path'])), ), - '\\' + '\\', ); + // Remove the file extension (.php) + /** @var class-string $className */ $className = mb_substr($className, 0, -4); if (in_array($className, $this->invalidClassnames, true)) { continue; } - // Check if this exists if (class_exists($className)) { return $className; } - // If the class does not exist, it is an invalid classname. $this->invalidClassnames[] = $className; } } @@ -357,11 +352,11 @@ public function listFiles(string $path): array * Scans the provided namespace, returning a list of all files * that are contained within the sub path specified by $path. * - * @return list List of file paths + * @return list List of file paths */ public function listNamespaceFiles(string $prefix, string $path): array { - if ($path === '' || ($prefix === '')) { + if ($path === '' || $prefix === '') { return []; } diff --git a/system/Autoloader/FileLocatorCached.php b/system/Autoloader/FileLocatorCached.php index 8b17399444c6..0aa267b2a84b 100644 --- a/system/Autoloader/FileLocatorCached.php +++ b/system/Autoloader/FileLocatorCached.php @@ -117,7 +117,7 @@ public function getClassname(string $file): string } /** - * @return list + * @return list */ public function search(string $path, string $ext = 'php', bool $prioritizeApp = true): array { diff --git a/system/Autoloader/FileLocatorInterface.php b/system/Autoloader/FileLocatorInterface.php index 3a1112dd480e..0422ec2519db 100644 --- a/system/Autoloader/FileLocatorInterface.php +++ b/system/Autoloader/FileLocatorInterface.php @@ -23,7 +23,7 @@ interface FileLocatorInterface * Attempts to locate a file by examining the name for a namespace * and looking through the PSR-4 namespaced files that we know about. * - * @param string $file The relative file path or namespaced file to + * @param non-empty-string $file The relative file path or namespaced file to * locate. If not namespaced, search in the app * folder. * @param non-empty-string|null $folder The folder within the namespace that we should @@ -32,12 +32,14 @@ interface FileLocatorInterface * folder. * @param string $ext The file extension the file should have. * - * @return false|string The path to the file, or false if not found. + * @return false|non-empty-string The path to the file, or false if not found. */ public function locateFile(string $file, ?string $folder = null, string $ext = 'php'); /** * Examines a file and returns the fully qualified class name. + * + * @param non-empty-string $file */ public function getClassname(string $file): string; @@ -54,7 +56,7 @@ public function getClassname(string $file): string; * 'app/Modules/bar/Config/Routes.php', * ] * - * @return list + * @return list */ public function search(string $path, string $ext = 'php', bool $prioritizeApp = true): array; @@ -62,7 +64,7 @@ public function search(string $path, string $ext = 'php', bool $prioritizeApp = * Find the qualified name of a file according to * the namespace of the first matched namespace path. * - * @return false|string The qualified name or false if the path is not found + * @return class-string|false The qualified name or false if the path is not found */ public function findQualifiedNameFromPath(string $path); diff --git a/system/BaseModel.php b/system/BaseModel.php index a360fe57f47f..fdc07ba2330d 100644 --- a/system/BaseModel.php +++ b/system/BaseModel.php @@ -21,12 +21,12 @@ use CodeIgniter\Database\Query; use CodeIgniter\DataConverter\DataConverter; use CodeIgniter\Entity\Entity; +use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\Exceptions\ModelException; use CodeIgniter\I18n\Time; use CodeIgniter\Pager\Pager; use CodeIgniter\Validation\ValidationInterface; use Config\Feature; -use InvalidArgumentException; use ReflectionClass; use ReflectionException; use ReflectionProperty; @@ -121,9 +121,13 @@ abstract class BaseModel protected ?DataConverter $converter = null; /** - * If this model should use "softDeletes" and - * simply set a date when rows are deleted, or - * do hard deletes. + * Determines whether the model should protect field names during + * mass assignment operations such as insert() and update(). + * + * When set to true, only the fields explicitly defined in the $allowedFields + * property will be allowed for mass assignment. This helps prevent + * unintended modification of database fields and improves security + * by avoiding mass assignment vulnerabilities. * * @var bool */ @@ -379,7 +383,7 @@ protected function createDataConverter(): void $this->converter = new DataConverter( $this->casts, $this->castHandlers, - $this->db + $this->db, ); } } @@ -528,9 +532,8 @@ abstract protected function doOnlyDeleted(); * Compiles a replace and runs the query. * This method works only with dbCalls. * - * @param array|null $row Row data - * @phpstan-param row_array|null $row - * @param bool $returnSQL Set to true to return Query String + * @param row_array|null $row Row data + * @param bool $returnSQL Set to true to return Query String * * @return BaseResult|false|Query|string */ @@ -548,8 +551,7 @@ abstract protected function doErrors(); * Public getter to return the id value using the idValue() method. * For example with SQL this will return $data->$this->primaryKey. * - * @param array|object $row Row data - * @phpstan-param row_array|object $row + * @param object|row_array $row Row data * * @return array|int|string|null */ @@ -570,8 +572,8 @@ abstract public function countAllResults(bool $reset = true, bool $test = false) * Loops over records in batches, allowing you to operate on them. * This method works only with dbCalls. * - * @param int $size Size - * @param Closure $userFunc Callback Function + * @param int $size Size + * @param Closure(array|object): mixed $userFunc Callback Function * * @return void * @@ -639,7 +641,7 @@ public function findColumn(string $columnName) $resultSet = $this->doFindColumn($columnName); - return $resultSet ? array_column($resultSet, $columnName) : null; + return $resultSet !== null ? array_column($resultSet, $columnName) : null; } /** @@ -733,8 +735,7 @@ public function first() * you must ensure that the class will provide access to the class * variables, even if through a magic method. * - * @param array|object $row Row data - * @phpstan-param row_array|object $row + * @param object|row_array $row Row data * * @throws ReflectionException */ @@ -768,7 +769,7 @@ protected function shouldUpdate($row): bool { $id = $this->getIdValue($row); - return ! ($id === null || $id === [] || $id === ''); + return ! in_array($id, [null, [], ''], true); } /** @@ -785,12 +786,10 @@ public function getInsertID() * Inserts data into the database. If an object is provided, * it will attempt to convert it to an array. * - * @param array|object|null $row Row data - * @phpstan-param row_array|object|null $row - * @param bool $returnID Whether insert ID should be returned or not. + * @param object|row_array|null $row Row data + * @param bool $returnID Whether insert ID should be returned or not. * - * @return bool|int|string insert ID or true on success. false on failure. - * @phpstan-return ($returnID is true ? int|string|false : bool) + * @return ($returnID is true ? false|int|string : bool) * * @throws ReflectionException */ @@ -863,8 +862,8 @@ public function insert($row = null, bool $returnID = true) /** * Set datetime to created field. * - * @phpstan-param row_array $row - * @param int|string $date timestamp or datetime string + * @param row_array $row + * @param int|string $date timestamp or datetime string */ protected function setCreatedField(array $row, $date): array { @@ -878,8 +877,8 @@ protected function setCreatedField(array $row, $date): array /** * Set datetime to updated field. * - * @phpstan-param row_array $row - * @param int|string $date timestamp or datetime string + * @param row_array $row + * @param int|string $date timestamp or datetime string */ protected function setUpdatedField(array $row, $date): array { @@ -893,11 +892,10 @@ protected function setUpdatedField(array $row, $date): array /** * Compiles batch insert runs the queries, validating each row prior. * - * @param list|null $set an associative array of insert values - * @phpstan-param list|null $set - * @param bool|null $escape Whether to escape values - * @param int $batchSize The size of the batch to run - * @param bool $testing True means only number of records is returned, false will execute the query + * @param list|null $set an associative array of insert values + * @param bool|null $escape Whether to escape values + * @param int $batchSize The size of the batch to run + * @param bool $testing True means only number of records is returned, false will execute the query * * @return bool|int Number of rows inserted or FALSE on failure * @@ -911,22 +909,7 @@ public function insertBatch(?array $set = null, ?bool $escape = null, int $batch if (is_array($set)) { foreach ($set as &$row) { - // If $row is using a custom class with public or protected - // properties representing the collection elements, we need to grab - // them as an array. - if (is_object($row) && ! $row instanceof stdClass) { - $row = $this->objectToArray($row, false, true); - } - - // If it's still a stdClass, go ahead and convert to - // an array so doProtectFields and other model methods - // don't have to do special checks. - if (is_object($row)) { - $row = (array) $row; - } - - // Convert any Time instances to appropriate $dateFormat - $row = $this->timeToString($row); + $row = $this->transformDataRowToArray($row); // Validate every row. if (! $this->skipValidation && ! $this->validate($row)) { @@ -1039,11 +1022,10 @@ public function update($id = null, $row = null): bool /** * Compiles an update and runs the query. * - * @param list|null $set an associative array of insert values - * @phpstan-param list|null $set - * @param string|null $index The where key - * @param int $batchSize The size of the batch to run - * @param bool $returnSQL True means SQL is returned, false will execute the query + * @param list|null $set an associative array of insert values + * @param string|null $index The where key + * @param int $batchSize The size of the batch to run + * @param bool $returnSQL True means SQL is returned, false will execute the query * * @return false|int|list Number of rows affected or FALSE on failure, SQL array when testMode * @@ -1054,21 +1036,7 @@ public function updateBatch(?array $set = null, ?string $index = null, int $batc { if (is_array($set)) { foreach ($set as &$row) { - // If $row is using a custom class with public or protected - // properties representing the collection elements, we need to grab - // them as an array. - if (is_object($row) && ! $row instanceof stdClass) { - // For updates the index field is needed even if it is not changed. - // So set $onlyChanged to false. - $row = $this->objectToArray($row, false, true); - } - - // If it's still a stdClass, go ahead and convert to - // an array so doProtectFields and other model methods - // don't have to do special checks. - if (is_object($row)) { - $row = (array) $row; - } + $row = $this->transformDataRowToArray($row); // Validate data before saving. if (! $this->skipValidation && ! $this->validate($row)) { @@ -1081,7 +1049,7 @@ public function updateBatch(?array $set = null, ?string $index = null, int $batc if ($updateIndex === null) { throw new InvalidArgumentException( 'The index ("' . $index . '") for updateBatch() is missing in the data: ' - . json_encode($row) + . json_encode($row), ); } @@ -1090,9 +1058,7 @@ public function updateBatch(?array $set = null, ?string $index = null, int $batc $row = $this->doProtectFields($row); // Restore updateIndex value in case it was wiped out - if ($updateIndex !== null) { - $row[$index] = $updateIndex; - } + $row[$index] = $updateIndex; $row = $this->setUpdatedField($row, $this->setDate()); } @@ -1124,8 +1090,8 @@ public function updateBatch(?array $set = null, ?string $index = null, int $batc /** * Deletes a single record from the database where $id matches. * - * @param array|int|string|null $id The rows primary key(s) - * @param bool $purge Allows overriding the soft deletes setting. + * @param int|list|string|null $id The rows primary key(s) + * @param bool $purge Allows overriding the soft deletes setting. * * @return BaseResult|bool * @@ -1137,7 +1103,7 @@ public function delete($id = null, bool $purge = false) throw new InvalidArgumentException('delete(): argument #1 ($id) should not be boolean.'); } - if ($id && (is_numeric($id) || is_string($id))) { + if (! in_array($id, [null, 0, '0'], true) && (is_numeric($id) || is_string($id))) { $id = [$id]; } @@ -1213,9 +1179,8 @@ public function onlyDeleted() /** * Compiles a replace and runs the query. * - * @param array|null $row Row data - * @phpstan-param row_array|null $row - * @param bool $returnSQL Set to true to return Query String + * @param row_array|null $row Row data + * @param bool $returnSQL Set to true to return Query String * * @return BaseResult|false|Query|string */ @@ -1226,7 +1191,9 @@ public function replace(?array $row = null, bool $returnSQL = false) return false; } - $row = $this->setUpdatedField((array) $row, $this->setDate()); + $row = (array) $row; + $row = $this->setCreatedField($row, $this->setDate()); + $row = $this->setUpdatedField($row, $this->setDate()); return $this->doReplace($row, $returnSQL); } @@ -1250,7 +1217,7 @@ public function errors(bool $forceDB = false) } // Do we have validation errors? - if (! $forceDB && ! $this->skipValidation && ($errors = $this->validation->getErrors())) { + if (! $forceDB && ! $this->skipValidation && ($errors = $this->validation->getErrors()) !== []) { return $errors; } @@ -1700,6 +1667,52 @@ protected function trigger(string $event, array $eventData) return $eventData; } + /** + * If the model is using casts, this will convert the data + * in $row according to the rules defined in `$casts`. + * + * @param object|row_array|null $row Row data + * + * @return object|row_array|null Converted row data + * + * @used-by insertBatch() + * @used-by updateBatch() + * + * @throws ReflectionException + * @deprecated Since 4.6.4, temporary solution - will be removed in 4.7 + */ + protected function transformDataRowToArray(array|object|null $row): array|object|null + { + // If casts are used, convert the data first + if ($this->useCasts()) { + if (is_array($row)) { + $row = $this->converter->toDataSource($row); + } elseif ($row instanceof stdClass) { + $row = (array) $row; + $row = $this->converter->toDataSource($row); + } elseif ($row instanceof Entity) { + $row = $this->converter->extract($row); + } elseif (is_object($row)) { + $row = $this->converter->extract($row); + } + } elseif (is_object($row) && ! $row instanceof stdClass) { + // If $row is using a custom class with public or protected + // properties representing the collection elements, we need to grab + // them as an array. + $row = $this->objectToArray($row, false, true); + } + + // If it's still a stdClass, go ahead and convert to + // an array so doProtectFields and other model methods + // don't have to do special checks. + if (is_object($row)) { + $row = (array) $row; + } + + // Convert any Time instances to appropriate $dateFormat + return $this->timeToString($row); + } + /** * Sets the return type of the results to be as an associative array. * @@ -1799,8 +1812,6 @@ protected function objectToRawArray($object, bool $onlyChanged = true, bool $rec // Loop over each property, // saving the name/value in a new array we can return. foreach ($props as $prop) { - // Must make protected values accessible. - $prop->setAccessible(true); $properties[$prop->getName()] = $prop->getValue($object); } } @@ -1811,9 +1822,8 @@ protected function objectToRawArray($object, bool $onlyChanged = true, bool $rec /** * Transform data to array. * - * @param array|object|null $row Row data - * @phpstan-param row_array|object|null $row - * @param string $type Type of data (insert|update) + * @param object|row_array|null $row Row data + * @param string $type Type of data (insert|update) * * @throws DataException * @throws InvalidArgumentException diff --git a/system/Boot.php b/system/Boot.php index 8b75908ded09..ba3675516b16 100644 --- a/system/Boot.php +++ b/system/Boot.php @@ -16,6 +16,7 @@ use CodeIgniter\Cache\FactoriesCache; use CodeIgniter\CLI\Console; use CodeIgniter\Config\DotEnv; +use Config\App; use Config\Autoload; use Config\Modules; use Config\Optimize; @@ -75,6 +76,34 @@ public static function bootWeb(Paths $paths): int return EXIT_SUCCESS; } + /** + * Used by command line scripts other than + * * `spark` + * * `php-cli` + * * `phpunit` + * + * @used-by `system/util_bootstrap.php` + */ + public static function bootConsole(Paths $paths): void + { + static::definePathConstants($paths); + static::loadConstants(); + static::checkMissingExtensions(); + + static::loadDotEnv($paths); + static::loadEnvironmentBootstrap($paths); + + static::loadCommonFunctions(); + static::loadAutoloader(); + static::setExceptionHandler(); + static::initializeKint(); + static::autoloadHelpers(); + + // We need to force the request to be a CLIRequest since we're in console + Services::createRequest(new App(), true); + service('routes')->loadRoutes(); + } + /** * Used by `spark` * @@ -196,7 +225,16 @@ protected static function definePathConstants(Paths $paths): void // The path to the writable directory. if (! defined('WRITEPATH')) { - define('WRITEPATH', realpath(rtrim($paths->writableDirectory, '\\/ ')) . DIRECTORY_SEPARATOR); + $writePath = realpath(rtrim($paths->writableDirectory, '\\/ ')); + + if ($writePath === false) { + header('HTTP/1.1 503 Service Unavailable.', true, 503); + echo 'The WRITEPATH is not set correctly.'; + + // EXIT_ERROR is not yet defined + exit(1); + } + define('WRITEPATH', $writePath . DIRECTORY_SEPARATOR); } // The path to the tests directory @@ -279,7 +317,7 @@ protected static function checkMissingExtensions(): void $message = sprintf( 'The framework needs the following extension(s) installed and loaded: %s.', - implode(', ', $missingExtensions) + implode(', ', $missingExtensions), ); header('HTTP/1.1 503 Service Unavailable.', true, 503); @@ -335,9 +373,8 @@ protected static function initializeConsole(): Console $console = new Console(); // Show basic information before we do anything else. - // @phpstan-ignore-next-line if (is_int($suppress = array_search('--no-header', $_SERVER['argv'], true))) { - unset($_SERVER['argv'][$suppress]); // @phpstan-ignore-line + unset($_SERVER['argv'][$suppress]); $suppress = true; } diff --git a/system/CLI/BaseCommand.php b/system/CLI/BaseCommand.php index afeb80eb5267..57df52d47f55 100644 --- a/system/CLI/BaseCommand.php +++ b/system/CLI/BaseCommand.php @@ -142,7 +142,7 @@ public function showHelp() { CLI::write(lang('CLI.helpUsage'), 'yellow'); - if (isset($this->usage)) { + if ($this->usage !== null) { $usage = $this->usage; } else { $usage = $this->name; @@ -154,7 +154,7 @@ public function showHelp() CLI::write($this->setPad($usage, 0, 0, 2)); - if (isset($this->description)) { + if ($this->description !== null) { CLI::newLine(); CLI::write(lang('CLI.helpDescription'), 'yellow'); CLI::write($this->setPad($this->description, 0, 0, 2)); diff --git a/system/CLI/CLI.php b/system/CLI/CLI.php index 236e5b685fff..b7c9ed64e2de 100644 --- a/system/CLI/CLI.php +++ b/system/CLI/CLI.php @@ -14,7 +14,7 @@ namespace CodeIgniter\CLI; use CodeIgniter\CLI\Exceptions\CLIException; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; use Throwable; /** @@ -107,12 +107,12 @@ class CLI /** * List of array segments. * - * @var array + * @var list */ protected static $segments = []; /** - * @var array + * @var array */ protected static $options = []; @@ -225,12 +225,12 @@ public static function prompt(string $field, $options = null, $validation = null $extraOutput = ''; $default = ''; - if ($validation && ! is_array($validation) && ! is_string($validation)) { + if (isset($validation) && ! is_array($validation) && ! is_string($validation)) { throw new InvalidArgumentException('$rules can only be of type string|array'); } if (! is_array($validation)) { - $validation = $validation ? explode('|', $validation) : []; + $validation = ($validation !== null) ? explode('|', $validation) : []; } if (is_string($options)) { @@ -289,7 +289,7 @@ public static function promptByKey($text, array $options, $validation = null): s CLI::isZeroOptions($options); - if ($line = array_shift($text)) { + if (($line = array_shift($text)) !== null) { CLI::write($line); } @@ -318,11 +318,7 @@ public static function promptByMultipleKeys(string $text, array $options): array if ($opts === []) { $extraOutput = $extraOutputDefault; } else { - $optsKey = []; - - foreach (array_keys($opts) as $key) { - $optsKey[] = $key; - } + $optsKey = array_keys($opts); $extraOutput = '[' . $extraOutputDefault . ', ' . implode(', ', $optsKey) . ']'; $extraOutput = 'You can specify multiple values separated by commas.' . PHP_EOL . $extraOutput; } @@ -339,7 +335,7 @@ public static function promptByMultipleKeys(string $text, array $options): array $pattern = preg_match_all('/^\d+(,\d+)*$/', trim($input)); // separate input by comma and convert all to an int[] - $inputToArray = array_map(static fn ($value) => (int) $value, explode(',', $input)); + $inputToArray = array_map(static fn ($value): int => (int) $value, explode(',', $input)); // find max from key of $options $maxOptions = array_key_last($options); // find max from input @@ -348,7 +344,7 @@ public static function promptByMultipleKeys(string $text, array $options): array // return the prompt again if $input contain(s) non-numeric character, except a comma. // And if max from $options less than max from input, // it means user tried to access null value in $options - if (! $pattern || $maxOptions < $maxInput) { + if ($pattern < 1 || $maxOptions < $maxInput) { static::error('Please select correctly.'); CLI::newLine(); @@ -441,7 +437,7 @@ protected static function validate(string $field, string $value, $rules): bool */ public static function print(string $text = '', ?string $foreground = null, ?string $background = null) { - if ($foreground || $background) { + if ((string) $foreground !== '' || (string) $background !== '') { $text = static::color($text, $foreground, $background); } @@ -457,7 +453,7 @@ public static function print(string $text = '', ?string $foreground = null, ?str */ public static function write(string $text = '', ?string $foreground = null, ?string $background = null) { - if ($foreground || $background) { + if ((string) $foreground !== '' || (string) $background !== '') { $text = static::color($text, $foreground, $background); } @@ -480,7 +476,7 @@ public static function error(string $text, string $foreground = 'light_red', ?st $stdout = static::$isColored; static::$isColored = static::hasColorSupport(STDERR); - if ($foreground || $background) { + if ($foreground !== '' || (string) $background !== '') { $text = static::color($text, $foreground, $background); } @@ -589,7 +585,7 @@ public static function color(string $text, string $foreground, ?string $backgrou throw CLIException::forInvalidColor('foreground', $foreground); } - if ($background !== null && ! array_key_exists($background, static::$background_colors)) { + if ((string) $background !== '' && ! array_key_exists($background, static::$background_colors)) { throw CLIException::forInvalidColor('background', $background); } @@ -610,11 +606,11 @@ public static function color(string $text, string $foreground, ?string $backgrou $nonColoredText = preg_replace( $pattern, '<<__colored_string__>>', - $text + $text, ); $nonColoredChunks = preg_split( '/<<__colored_string__>>/u', - $nonColoredText + $nonColoredText, ); foreach ($nonColoredChunks as $i => $chunk) { @@ -637,7 +633,7 @@ private static function getColoredText(string $text, string $foreground, ?string { $string = "\033[" . static::$foreground_colors[$foreground] . 'm'; - if ($background !== null) { + if ((string) $background !== '') { $string .= "\033[" . static::$background_colors[$background] . 'm'; } @@ -654,7 +650,7 @@ private static function getColoredText(string $text, string $foreground, ?string */ public static function strlen(?string $string): int { - if ($string === null) { + if ((string) $string === '') { return 0; } @@ -768,7 +764,7 @@ public static function generateDimensions() // Look for the next lines ending in ": " // Searching for "Columns:" or "Lines:" will fail on non-English locales - if ($return === 0 && $output && preg_match('/:\s*(\d+)\n[^:]+:\s*(\d+)\n/', implode("\n", $output), $matches)) { + if ($return === 0 && $output !== [] && preg_match('/:\s*(\d+)\n[^:]+:\s*(\d+)\n/', implode("\n", $output), $matches)) { static::$height = (int) $matches[1]; static::$width = (int) $matches[2]; } @@ -835,7 +831,7 @@ public static function showProgress($thisStep = 1, int $totalSteps = 10) */ public static function wrap(?string $string = null, int $max = 0, int $padLeft = 0): string { - if ($string === null || $string === '') { + if ((string) $string === '') { return ''; } @@ -944,6 +940,8 @@ public static function getSegment(int $index) /** * Returns the raw array of segments found. + * + * @return list */ public static function getSegments(): array { @@ -971,6 +969,8 @@ public static function getOption(string $name) /** * Returns the raw array of options found. + * + * @return array */ public static function getOptions(): array { diff --git a/system/CLI/Commands.php b/system/CLI/Commands.php index 2115714106bc..5630ee0f7b69 100644 --- a/system/CLI/Commands.php +++ b/system/CLI/Commands.php @@ -21,13 +21,15 @@ /** * Core functionality for running, listing, etc commands. + * + * @phpstan-type commands_list array, 'file': string, 'group': string,'description': string}> */ class Commands { /** * The found commands. * - * @var array + * @var commands_list */ protected $commands = []; @@ -52,12 +54,14 @@ public function __construct($logger = null) /** * Runs a command given * - * @return int|void Exit code + * @param array $params + * + * @return int Exit code */ public function run(string $command, array $params) { if (! $this->verifyCommand($command, $this->commands)) { - return; + return EXIT_ERROR; } // The file would have already been loaded during the @@ -77,7 +81,7 @@ public function run(string $command, array $params) /** * Provide access to the list of commands. * - * @return array + * @return commands_list */ public function getCommands() { @@ -96,7 +100,7 @@ public function discoverCommands() return; } - /** @var FileLocatorInterface $locator */ + /** @var FileLocatorInterface */ $locator = service('locator'); $files = $locator->listFiles('Commands/'); @@ -109,6 +113,7 @@ public function discoverCommands() // Loop over each file checking to see if a command with that // alias exists in the class. foreach ($files as $file) { + /** @var class-string|false */ $className = $locator->findQualifiedNameFromPath($file); if ($className === false || ! class_exists($className)) { @@ -122,10 +127,9 @@ public function discoverCommands() continue; } - /** @var BaseCommand $class */ $class = new $className($this->logger, $this); - if (isset($class->group) && ! isset($this->commands[$class->name])) { + if ($class->group !== null && ! isset($this->commands[$class->name])) { $this->commands[$class->name] = [ 'class' => $className, 'file' => $file, @@ -146,6 +150,8 @@ public function discoverCommands() /** * Verifies if the command being sought is found * in the commands list. + * + * @param commands_list $commands */ public function verifyCommand(string $command, array $commands): bool { @@ -153,9 +159,9 @@ public function verifyCommand(string $command, array $commands): bool return true; } - $message = lang('CLI.commandNotFound', [$command]); - + $message = lang('CLI.commandNotFound', [$command]); $alternatives = $this->getCommandAlternatives($command, $commands); + if ($alternatives !== []) { if (count($alternatives) === 1) { $message .= "\n\n" . lang('CLI.altCommandSingular') . "\n "; @@ -175,11 +181,17 @@ public function verifyCommand(string $command, array $commands): bool /** * Finds alternative of `$name` among collection * of commands. + * + * @param commands_list $collection + * + * @return list */ protected function getCommandAlternatives(string $name, array $collection): array { + /** @var array */ $alternatives = []; + /** @var string $commandName */ foreach (array_keys($collection) as $commandName) { $lev = levenshtein($name, $commandName); diff --git a/system/CLI/Console.php b/system/CLI/Console.php index 725193d424b5..89415e265134 100644 --- a/system/CLI/Console.php +++ b/system/CLI/Console.php @@ -38,14 +38,13 @@ public function run() $appConfig = config(App::class); Services::createRequest($appConfig, true); // Load Routes - Services::routes()->loadRoutes(); + service('routes')->loadRoutes(); - $runner = Services::commands(); $params = array_merge(CLI::getSegments(), CLI::getOptions()); $params = $this->parseParamsForHelpOption($params); $command = array_shift($params) ?? 'list'; - return $runner->run($command, $params); + return service('commands')->run($command, $params); } /** @@ -60,10 +59,9 @@ public function showHeader(bool $suppress = false) } CLI::write(sprintf( - 'CodeIgniter v%s Command Line Tool - Server Time: %s UTC%s', + 'CodeIgniter v%s Command Line Tool - Server Time: %s', CodeIgniter::CI_VERSION, - date('Y-m-d H:i:s'), - date('P') + date('Y-m-d H:i:s \\U\\T\\CP'), ), 'green'); CLI::newLine(); } @@ -75,6 +73,8 @@ public function showHeader(bool $suppress = false) * If present, it will be found as `['help' => null]`. * We'll remove that as an option from `$params` and * unshift it as argument instead. + * + * @param array $params */ private function parseParamsForHelpOption(array $params): array { diff --git a/system/CLI/Exceptions/CLIException.php b/system/CLI/Exceptions/CLIException.php index fae92c001d75..304b2ea4f444 100644 --- a/system/CLI/Exceptions/CLIException.php +++ b/system/CLI/Exceptions/CLIException.php @@ -14,7 +14,7 @@ namespace CodeIgniter\CLI\Exceptions; use CodeIgniter\Exceptions\DebugTraceableTrait; -use RuntimeException; +use CodeIgniter\Exceptions\RuntimeException; /** * CLIException diff --git a/system/CLI/GeneratorTrait.php b/system/CLI/GeneratorTrait.php index 6a061a36b8b3..62f5ceec09ae 100644 --- a/system/CLI/GeneratorTrait.php +++ b/system/CLI/GeneratorTrait.php @@ -171,7 +171,7 @@ private function generateFile(string $target, string $content): void CLI::prompt( 'Are you sure you want to continue?', ['y', 'n'], - 'required' + 'required', ) === 'n' ) { CLI::newLine(); @@ -193,7 +193,7 @@ private function generateFile(string $target, string $content): void CLI::error( lang('CLI.generator.fileExist', [clean_path($target)]), 'light_gray', - 'red' + 'red', ); CLI::newLine(); @@ -216,7 +216,7 @@ private function generateFile(string $target, string $content): void CLI::error( lang('CLI.generator.fileError', [clean_path($target)]), 'light_gray', - 'red' + 'red', ); CLI::newLine(); @@ -227,7 +227,7 @@ private function generateFile(string $target, string $content): void if ($this->getOption('force') && $isFile) { CLI::write( lang('CLI.generator.fileOverwrite', [clean_path($target)]), - 'yellow' + 'yellow', ); CLI::newLine(); @@ -236,7 +236,7 @@ private function generateFile(string $target, string $content): void CLI::write( lang('CLI.generator.fileCreate', [clean_path($target)]), - 'green' + 'green', ); CLI::newLine(); } @@ -282,22 +282,21 @@ protected function qualifyClassName(): string return $namespace . $directoryString . str_replace('/', '\\', $class); } - /** - * Normalize input classname. - */ private function normalizeInputClassName(): string { // Gets the class name from input. $class = $this->params[0] ?? CLI::getSegment(2); if ($class === null && $this->hasClassName) { - // @codeCoverageIgnoreStart - $nameLang = $this->classNameLang !== '' + $nameField = $this->classNameLang !== '' ? $this->classNameLang : 'CLI.generator.className.default'; - $class = CLI::prompt(lang($nameLang), null, 'required'); + $class = CLI::prompt(lang($nameField), null, 'required'); + + // Reassign the class name to the params array in case + // the class name is requested again + $this->params[0] = $class; CLI::newLine(); - // @codeCoverageIgnoreEnd } helper('inflector'); @@ -326,10 +325,10 @@ private function normalizeInputClassName(): string '\\', array_map( pascalize(...), - explode('\\', str_replace('/', '\\', trim($class))) - ) + explode('\\', str_replace('/', '\\', trim($class))), + ), ), - '\\/' + '\\/', ); } @@ -351,7 +350,7 @@ protected function renderTemplate(array $data = []): string return view( "CodeIgniter\\Commands\\Generators\\Views\\{$this->template}", $data, - ['debug' => false] + ['debug' => false], ); } } @@ -370,15 +369,15 @@ protected function parseTemplate( string $class, array $search = [], array $replace = [], - array $data = [] + array $data = [], ): string { // Retrieves the namespace part from the fully qualified class name. $namespace = trim( implode( '\\', - array_slice(explode('\\', $class), 0, -1) + array_slice(explode('\\', $class), 0, -1), ), - '\\' + '\\', ); $search[] = '<@php'; $search[] = '{namespace}'; @@ -404,7 +403,7 @@ protected function buildContent(string $class): string && preg_match( '/(?P(?:^use [^;]+;$\n?)+)/m', $template, - $match + $match, ) ) { $imports = explode("\n", trim($match['imports'])); @@ -432,7 +431,7 @@ protected function buildPath(string $class): string CLI::error( lang('CLI.namespaceNotDefined', [$namespace]), 'light_gray', - 'red' + 'red', ); CLI::newLine(); @@ -446,7 +445,7 @@ protected function buildPath(string $class): string . str_replace( '\\', DIRECTORY_SEPARATOR, - trim(str_replace($namespace . '\\', '', $class), '\\') + trim(str_replace($namespace . '\\', '', $class), '\\'), ) . '.php'; return implode( @@ -454,8 +453,8 @@ protected function buildPath(string $class): string array_slice( explode(DIRECTORY_SEPARATOR, $file), 0, - -1 - ) + -1, + ), ) . DIRECTORY_SEPARATOR . $this->basename($file); } @@ -470,9 +469,9 @@ protected function getNamespace(): string str_replace( '/', '\\', - $this->getOption('namespace') ?? APP_NAMESPACE + $this->getOption('namespace') ?? APP_NAMESPACE, ), - '\\' + '\\', ); } diff --git a/system/Cache/CacheFactory.php b/system/Cache/CacheFactory.php index fb60d73c5cd7..e84254142125 100644 --- a/system/Cache/CacheFactory.php +++ b/system/Cache/CacheFactory.php @@ -75,7 +75,7 @@ public static function getHandler(Cache $config, ?string $handler = null, ?strin } } - // If $adapter->initialization throws a CriticalError exception, we will attempt to + // If $adapter->initialize() throws a CriticalError exception, we will attempt to // use the $backup handler, if that also fails, we resort to the dummy handler. try { $adapter->initialize(); diff --git a/system/Cache/CacheInterface.php b/system/Cache/CacheInterface.php index d76d5aa15ba3..0f94cd56f930 100644 --- a/system/Cache/CacheInterface.php +++ b/system/Cache/CacheInterface.php @@ -13,9 +13,6 @@ namespace CodeIgniter\Cache; -/** - * Cache interface - */ interface CacheInterface { /** @@ -30,16 +27,16 @@ public function initialize(); * * @param string $key Cache item name * - * @return array|bool|float|int|object|string|null + * @return mixed */ public function get(string $key); /** * Saves an item to the cache store. * - * @param string $key Cache item name - * @param array|bool|float|int|object|string|null $value The data to save - * @param int $ttl Time To Live, in seconds (default 60) + * @param string $key Cache item name + * @param mixed $value The data to save + * @param int $ttl Time To Live, in seconds (default 60) * * @return bool Success or failure */ @@ -87,7 +84,7 @@ public function clean(); * The information returned and the structure of the data * varies depending on the handler. * - * @return array|false|object|null + * @return array|false|object|null */ public function getCacheInfo(); @@ -96,10 +93,9 @@ public function getCacheInfo(); * * @param string $key Cache item name. * - * @return array|false|null - * Returns null if the item does not exist, otherwise array - * with at least the 'expire' key for absolute epoch expiry (or null). - * Some handlers may return false when an item does not exist, which is deprecated. + * @return array|false|null Returns null if the item does not exist, otherwise array + * with at least the 'expire' key for absolute epoch expiry (or null). + * Some handlers may return false when an item does not exist, which is deprecated. */ public function getMetaData(string $key); diff --git a/system/Cache/Exceptions/CacheException.php b/system/Cache/Exceptions/CacheException.php index 852e6302ced1..c4871a00e8b4 100644 --- a/system/Cache/Exceptions/CacheException.php +++ b/system/Cache/Exceptions/CacheException.php @@ -14,20 +14,16 @@ namespace CodeIgniter\Cache\Exceptions; use CodeIgniter\Exceptions\DebugTraceableTrait; -use CodeIgniter\Exceptions\ExceptionInterface; -use RuntimeException; +use CodeIgniter\Exceptions\RuntimeException; -/** - * CacheException - */ -class CacheException extends RuntimeException implements ExceptionInterface +class CacheException extends RuntimeException { use DebugTraceableTrait; /** * Thrown when handler has no permission to write cache. * - * @return CacheException + * @return static */ public static function forUnableToWrite(string $path) { @@ -37,7 +33,7 @@ public static function forUnableToWrite(string $path) /** * Thrown when an unrecognized handler is used. * - * @return CacheException + * @return static */ public static function forInvalidHandlers() { @@ -47,7 +43,7 @@ public static function forInvalidHandlers() /** * Thrown when no backup handler is setup in config. * - * @return CacheException + * @return static */ public static function forNoBackup() { @@ -57,7 +53,7 @@ public static function forNoBackup() /** * Thrown when specified handler was not found. * - * @return CacheException + * @return static */ public static function forHandlerNotFound() { diff --git a/system/Cache/FactoriesCache.php b/system/Cache/FactoriesCache.php index e4b7488f43df..6e49996c5d45 100644 --- a/system/Cache/FactoriesCache.php +++ b/system/Cache/FactoriesCache.php @@ -18,15 +18,9 @@ final class FactoriesCache { - /** - * @var CacheInterface|FileVarExportHandler - */ - private $cache; - - /** - * @param CacheInterface|FileVarExportHandler|null $cache - */ - public function __construct($cache = null) + private readonly CacheInterface|FileVarExportHandler $cache; + + public function __construct(CacheInterface|FileVarExportHandler|null $cache = null) { $this->cache = $cache ?? new FileVarExportHandler(); } @@ -51,7 +45,9 @@ public function load(string $component): bool { $key = $this->getCacheKey($component); - if (! $data = $this->cache->get($key)) { + $data = $this->cache->get($key); + + if (! is_array($data) || $data === []) { return false; } diff --git a/system/Cache/FactoriesCache/FileVarExportHandler.php b/system/Cache/FactoriesCache/FileVarExportHandler.php index b7c1a043c86e..092cd67ebd80 100644 --- a/system/Cache/FactoriesCache/FileVarExportHandler.php +++ b/system/Cache/FactoriesCache/FileVarExportHandler.php @@ -17,10 +17,7 @@ final class FileVarExportHandler { private string $path = WRITEPATH . 'cache'; - /** - * @param array|bool|float|int|object|string|null $val - */ - public function save(string $key, $val): void + public function save(string $key, mixed $val): void { $val = var_export($val, true); @@ -36,10 +33,7 @@ public function delete(string $key): void @unlink($this->path . "/{$key}"); } - /** - * @return array|bool|float|int|object|string|null - */ - public function get(string $key) + public function get(string $key): mixed { return @include $this->path . "/{$key}"; } diff --git a/system/Cache/Handlers/BaseHandler.php b/system/Cache/Handlers/BaseHandler.php index 43d316f87b0d..db482952022a 100644 --- a/system/Cache/Handlers/BaseHandler.php +++ b/system/Cache/Handlers/BaseHandler.php @@ -15,9 +15,10 @@ use Closure; use CodeIgniter\Cache\CacheInterface; +use CodeIgniter\Exceptions\BadMethodCallException; +use CodeIgniter\Exceptions\InvalidArgumentException; use Config\Cache; use Exception; -use InvalidArgumentException; /** * Base class for cache handling @@ -52,7 +53,7 @@ abstract class BaseHandler implements CacheInterface * Keys that exceed MAX_KEY_LENGTH are hashed. * From https://github.com/symfony/cache/blob/7b024c6726af21fd4984ac8d1eae2b9f3d90de88/CacheItem.php#L158 * - * @param string $key The key to validate + * @param mixed $key The key to validate * @param string $prefix Optional prefix to include in length calculations * * @throws InvalidArgumentException When $key is not valid @@ -66,8 +67,9 @@ public static function validateKey($key, $prefix = ''): string throw new InvalidArgumentException('Cache key cannot be empty.'); } - $reserved = config(Cache::class)->reservedCharacters ?? self::RESERVED_CHARACTERS; - if ($reserved && strpbrk($key, $reserved) !== false) { + $reserved = config(Cache::class)->reservedCharacters; + + if ($reserved !== '' && strpbrk($key, $reserved) !== false) { throw new InvalidArgumentException('Cache key contains reserved characters ' . $reserved); } @@ -82,7 +84,7 @@ public static function validateKey($key, $prefix = ''): string * @param int $ttl Time to live * @param Closure(): mixed $callback Callback return value * - * @return array|bool|float|int|object|string|null + * @return mixed */ public function remember(string $key, int $ttl, Closure $callback) { @@ -102,12 +104,12 @@ public function remember(string $key, int $ttl, Closure $callback) * * @param string $pattern Cache items glob-style pattern * - * @return int|never + * @return int * * @throws Exception */ public function deleteMatching(string $pattern) { - throw new Exception('The deleteMatching method is not implemented.'); + throw new BadMethodCallException('The deleteMatching method is not implemented.'); } } diff --git a/system/Cache/Handlers/FileHandler.php b/system/Cache/Handlers/FileHandler.php index a86a45e83d00..010fc86d9cdd 100644 --- a/system/Cache/Handlers/FileHandler.php +++ b/system/Cache/Handlers/FileHandler.php @@ -54,22 +54,22 @@ class FileHandler extends BaseHandler */ public function __construct(Cache $config) { - if (! property_exists($config, 'file')) { - $config->file = [ - 'storePath' => $config->storePath ?? WRITEPATH . 'cache', - 'mode' => 0640, - ]; - } + $options = [ + ...['storePath' => WRITEPATH . 'cache', 'mode' => 0640], + ...$config->file, + ]; - $this->path = ! empty($config->file['storePath']) ? $config->file['storePath'] : WRITEPATH . 'cache'; - $this->path = rtrim($this->path, '/') . '/'; + $this->path = $options['storePath'] !== '' ? $options['storePath'] : WRITEPATH . 'cache'; + $this->path = rtrim($this->path, '\\/') . '/'; if (! is_really_writable($this->path)) { throw CacheException::forUnableToWrite($this->path); } - $this->mode = $config->file['mode'] ?? 0640; + $this->mode = $options['mode']; $this->prefix = $config->prefix; + + helper('filesystem'); } /** @@ -103,7 +103,7 @@ public function save(string $key, $value, int $ttl = 60) 'data' => $value, ]; - if ($this->writeFile($this->path . $key, serialize($contents))) { + if (write_file($this->path . $key, serialize($contents))) { try { chmod($this->path . $key, $this->mode); @@ -183,7 +183,7 @@ public function decrement(string $key, int $offset = 1) */ public function clean() { - return $this->deleteFiles($this->path, false, true); + return delete_files($this->path, false, true); } /** @@ -191,7 +191,7 @@ public function clean() */ public function getCacheInfo() { - return $this->getDirFileInfo($this->path); + return get_dir_file_info($this->path); } /** @@ -222,7 +222,7 @@ public function isSupported(): bool /** * Does the heavy lifting of actually retrieving the file and - * verifying it's age. + * verifying its age. * * @return array{data: mixed, ttl: int, time: int}|false */ @@ -232,7 +232,17 @@ protected function getItem(string $filename) return false; } - $data = @unserialize(file_get_contents($this->path . $filename)); + $content = @file_get_contents($this->path . $filename); + + if ($content === false) { + return false; + } + + try { + $data = unserialize($content); + } catch (Throwable) { + return false; + } if (! is_array($data)) { return false; @@ -258,6 +268,8 @@ protected function getItem(string $filename) /** * Writes a file to disk, or returns false if not successful. * + * @deprecated 4.6.1 Use `write_file()` instead. + * * @param string $path * @param string $data * @param string $mode @@ -272,7 +284,9 @@ protected function writeFile($path, $data, $mode = 'wb') flock($fp, LOCK_EX); - for ($result = $written = 0, $length = strlen($data); $written < $length; $written += $result) { + $result = 0; + + for ($written = 0, $length = strlen($data); $written < $length; $written += $result) { if (($result = fwrite($fp, substr($data, $written))) === false) { break; } @@ -290,6 +304,8 @@ protected function writeFile($path, $data, $mode = 'wb') * If the second parameter is set to TRUE, any directories contained * within the supplied base directory will be nuked as well. * + * @deprecated 4.6.1 Use `delete_files()` instead. + * * @param string $path File path * @param bool $delDir Whether to delete any directories found in the path * @param bool $htdocs Whether to skip deleting .htaccess and index page files @@ -308,7 +324,7 @@ protected function deleteFiles(string $path, bool $delDir = false, bool $htdocs if ($filename !== '.' && $filename !== '..') { if (is_dir($path . DIRECTORY_SEPARATOR . $filename) && $filename[0] !== '.') { $this->deleteFiles($path . DIRECTORY_SEPARATOR . $filename, $delDir, $htdocs, $_level + 1); - } elseif (! $htdocs || ! preg_match('/^(\.htaccess|index\.(html|htm|php)|web\.config)$/i', $filename)) { + } elseif (! $htdocs || preg_match('/^(\.htaccess|index\.(html|htm|php)|web\.config)$/i', $filename) !== 1) { @unlink($path . DIRECTORY_SEPARATOR . $filename); } } @@ -325,37 +341,52 @@ protected function deleteFiles(string $path, bool $delDir = false, bool $htdocs * * Any sub-folders contained within the specified path are read as well. * + * @deprecated 4.6.1 Use `get_dir_file_info()` instead. + * * @param string $sourceDir Path to source * @param bool $topLevelOnly Look only at the top level directory specified? * @param bool $_recursion Internal variable to determine recursion status - do not use in calls * - * @return array|false + * @return array|false */ protected function getDirFileInfo(string $sourceDir, bool $topLevelOnly = true, bool $_recursion = false) { - static $_filedata = []; - $relativePath = $sourceDir; + static $filedata = []; + + $relativePath = $sourceDir; + $filePointer = @opendir($sourceDir); - if ($fp = @opendir($sourceDir)) { - // reset the array and make sure $source_dir has a trailing slash on the initial call + if (! is_bool($filePointer)) { + // reset the array and make sure $sourceDir has a trailing slash on the initial call if ($_recursion === false) { - $_filedata = []; - $sourceDir = rtrim(realpath($sourceDir) ?: $sourceDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + $filedata = []; + + $resolvedSrc = realpath($sourceDir); + $resolvedSrc = $resolvedSrc === false ? $sourceDir : $resolvedSrc; + + $sourceDir = rtrim($resolvedSrc, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; } - // Used to be foreach (scandir($source_dir, 1) as $file), but scandir() is simply not as fast - while (false !== ($file = readdir($fp))) { + // Used to be foreach (scandir($sourceDir, 1) as $file), but scandir() is simply not as fast + while (false !== $file = readdir($filePointer)) { if (is_dir($sourceDir . $file) && $file[0] !== '.' && $topLevelOnly === false) { $this->getDirFileInfo($sourceDir . $file . DIRECTORY_SEPARATOR, $topLevelOnly, true); } elseif (! is_dir($sourceDir . $file) && $file[0] !== '.') { - $_filedata[$file] = $this->getFileInfo($sourceDir . $file); - $_filedata[$file]['relative_path'] = $relativePath; + $filedata[$file] = $this->getFileInfo($sourceDir . $file); + + $filedata[$file]['relative_path'] = $relativePath; } } - closedir($fp); + closedir($filePointer); - return $_filedata; + return $filedata; } return false; @@ -367,10 +398,21 @@ protected function getDirFileInfo(string $sourceDir, bool $topLevelOnly = true, * Options are: name, server_path, size, date, readable, writable, executable, fileperms * Returns FALSE if the file cannot be found. * - * @param string $file Path to file - * @param array|string $returnedValues Array or comma separated string of information returned + * @deprecated 4.6.1 Use `get_file_info()` instead. + * + * @param string $file Path to file + * @param list|string $returnedValues Array or comma separated string of information returned * - * @return array|false + * @return array{ + * name?: string, + * server_path?: string, + * size?: int, + * date?: int, + * readable?: bool, + * writable?: bool, + * executable?: bool, + * fileperms?: int + * }|false */ protected function getFileInfo(string $file, $returnedValues = ['name', 'server_path', 'size', 'date']) { diff --git a/system/Cache/Handlers/MemcachedHandler.php b/system/Cache/Handlers/MemcachedHandler.php index e1048004077a..91ac38a9427d 100644 --- a/system/Cache/Handlers/MemcachedHandler.php +++ b/system/Cache/Handlers/MemcachedHandler.php @@ -13,6 +13,7 @@ namespace CodeIgniter\Cache\Handlers; +use CodeIgniter\Exceptions\BadMethodCallException; use CodeIgniter\Exceptions\CriticalError; use CodeIgniter\I18n\Time; use Config\Cache; @@ -37,7 +38,7 @@ class MemcachedHandler extends BaseHandler /** * Memcached Configuration * - * @var array + * @var array{host: string, port: int, weight: int, raw: bool} */ protected $config = [ 'host' => '127.0.0.1', @@ -75,48 +76,37 @@ public function initialize() { try { if (class_exists(Memcached::class)) { - // Create new instance of Memcached $this->memcached = new Memcached(); + if ($this->config['raw']) { $this->memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); } - // Add server $this->memcached->addServer( $this->config['host'], $this->config['port'], - $this->config['weight'] + $this->config['weight'], ); - // attempt to get status of servers $stats = $this->memcached->getStats(); // $stats should be an associate array with a key in the format of host:port. // If it doesn't have the key, we know the server is not working as expected. - if (! isset($stats[$this->config['host'] . ':' . $this->config['port']])) { + if (! is_array($stats) || ! isset($stats[$this->config['host'] . ':' . $this->config['port']])) { throw new CriticalError('Cache: Memcached connection failed.'); } } elseif (class_exists(Memcache::class)) { - // Create new instance of Memcache $this->memcached = new Memcache(); - // Check if we can connect to the server - $canConnect = $this->memcached->connect( - $this->config['host'], - $this->config['port'] - ); - - // If we can't connect, throw a CriticalError exception - if ($canConnect === false) { + if (! $this->memcached->connect($this->config['host'], $this->config['port'])) { throw new CriticalError('Cache: Memcache connection failed.'); } - // Add server, third parameter is persistence and defaults to TRUE. $this->memcached->addServer( $this->config['host'], $this->config['port'], true, - $this->config['weight'] + $this->config['weight'], ); } else { throw new CriticalError('Cache: Not support Memcache(d) extension.'); @@ -197,7 +187,7 @@ public function delete(string $key) */ public function deleteMatching(string $pattern) { - throw new Exception('The deleteMatching method is not implemented for Memcached. You must select File, Redis or Predis handlers to use it.'); + throw new BadMethodCallException('The deleteMatching method is not implemented for Memcached. You must select File, Redis or Predis handlers to use it.'); } /** diff --git a/system/Cache/Handlers/PredisHandler.php b/system/Cache/Handlers/PredisHandler.php index 59e35aa4208f..8d0ce9998807 100644 --- a/system/Cache/Handlers/PredisHandler.php +++ b/system/Cache/Handlers/PredisHandler.php @@ -19,6 +19,7 @@ use Exception; use Predis\Client; use Predis\Collection\Iterator\Keyspace; +use Predis\Response\Status; /** * Predis cache handler @@ -30,7 +31,13 @@ class PredisHandler extends BaseHandler /** * Default config * - * @var array + * @var array{ + * scheme: string, + * host: string, + * password: string|null, + * port: int, + * timeout: int + * } */ protected $config = [ 'scheme' => 'tcp', @@ -81,7 +88,7 @@ public function get(string $key) $data = array_combine( ['__ci_type', '__ci_value'], - $this->redis->hmget($key, ['__ci_type', '__ci_value']) + $this->redis->hmget($key, ['__ci_type', '__ci_value']), ); if (! isset($data['__ci_type'], $data['__ci_value']) || $data['__ci_value'] === false) { @@ -121,7 +128,7 @@ public function save(string $key, $value, int $ttl = 60) return false; } - if (! $this->redis->hmset($key, ['__ci_type' => $dataType, '__ci_value' => $value])) { + if (! $this->redis->hmset($key, ['__ci_type' => $dataType, '__ci_value' => $value]) instanceof Status) { return false; } @@ -155,6 +162,10 @@ public function deleteMatching(string $pattern) $matchedKeys[] = $key; } + if ($matchedKeys === []) { + return 0; + } + return $this->redis->del($matchedKeys); } diff --git a/system/Cache/Handlers/RedisHandler.php b/system/Cache/Handlers/RedisHandler.php index 6cd43506bdb5..06a089e2660b 100644 --- a/system/Cache/Handlers/RedisHandler.php +++ b/system/Cache/Handlers/RedisHandler.php @@ -29,7 +29,13 @@ class RedisHandler extends BaseHandler /** * Default config * - * @var array + * @var array{ + * host: string, + * password: string|null, + * port: int, + * timeout: int, + * database: int, + * } */ protected $config = [ 'host' => '127.0.0.1', @@ -181,7 +187,7 @@ public function deleteMatching(string $pattern) $iterator = null; do { - /** @var false|list|Redis $keys */ + /** @var false|list $keys */ $keys = $this->redis->scan($iterator, $pattern); if (is_array($keys)) { @@ -189,7 +195,7 @@ public function deleteMatching(string $pattern) } } while ($iterator > 0); - return $this->redis->del($matchedKeys); + return (int) $this->redis->del($matchedKeys); } /** diff --git a/system/Cache/Handlers/WincacheHandler.php b/system/Cache/Handlers/WincacheHandler.php index 0ddee50a7fde..d4d97701b135 100644 --- a/system/Cache/Handlers/WincacheHandler.php +++ b/system/Cache/Handlers/WincacheHandler.php @@ -13,9 +13,9 @@ namespace CodeIgniter\Cache\Handlers; +use CodeIgniter\Exceptions\BadMethodCallException; use CodeIgniter\I18n\Time; use Config\Cache; -use Exception; /** * Cache handler for WinCache from Microsoft & IIS. @@ -80,7 +80,7 @@ public function delete(string $key) */ public function deleteMatching(string $pattern) { - throw new Exception('The deleteMatching method is not implemented for Wincache. You must select File, Redis or Predis handlers to use it.'); + throw new BadMethodCallException('The deleteMatching method is not implemented for Wincache. You must select File, Redis or Predis handlers to use it.'); } /** diff --git a/system/Cache/ResponseCache.php b/system/Cache/ResponseCache.php index 388931813c7c..2c92dc5058be 100644 --- a/system/Cache/ResponseCache.php +++ b/system/Cache/ResponseCache.php @@ -13,12 +13,12 @@ namespace CodeIgniter\Cache; +use CodeIgniter\Exceptions\RuntimeException; use CodeIgniter\HTTP\CLIRequest; use CodeIgniter\HTTP\Header; use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\ResponseInterface; use Config\Cache as CacheConfig; -use Exception; /** * Web Page Caching @@ -40,12 +40,10 @@ final class ResponseCache * * @var bool|list */ - private $cacheQueryString = false; + private array|bool $cacheQueryString = false; /** - * Cache time to live. - * - * @var int seconds + * Cache time to live (TTL) in seconds. */ private int $ttl = 0; @@ -54,10 +52,7 @@ public function __construct(CacheConfig $config, private readonly CacheInterface $this->cacheQueryString = $config->cacheQueryString; } - /** - * @return $this - */ - public function setTtl(int $ttl) + public function setTtl(int $ttl): self { $this->ttl = $ttl; @@ -67,11 +62,9 @@ public function setTtl(int $ttl) /** * Generates the cache key to use from the current request. * - * @param CLIRequest|IncomingRequest $request - * * @internal for testing purposes only */ - public function generateCacheKey($request): string + public function generateCacheKey(CLIRequest|IncomingRequest $request): string { if ($request instanceof CLIRequest) { return md5($request->getPath()); @@ -79,7 +72,7 @@ public function generateCacheKey($request): string $uri = clone $request->getUri(); - $query = $this->cacheQueryString + $query = (bool) $this->cacheQueryString ? $uri->getQuery(is_array($this->cacheQueryString) ? ['only' => $this->cacheQueryString] : []) : ''; @@ -88,10 +81,8 @@ public function generateCacheKey($request): string /** * Caches the response. - * - * @param CLIRequest|IncomingRequest $request */ - public function make($request, ResponseInterface $response): bool + public function make(CLIRequest|IncomingRequest $request, ResponseInterface $response): bool { if ($this->ttl === 0) { return true; @@ -112,18 +103,18 @@ public function make($request, ResponseInterface $response): bool return $this->cache->save( $this->generateCacheKey($request), serialize(['headers' => $headers, 'output' => $response->getBody()]), - $this->ttl + $this->ttl, ); } /** * Gets the cached response for the request. - * - * @param CLIRequest|IncomingRequest $request */ - public function get($request, ResponseInterface $response): ?ResponseInterface + public function get(CLIRequest|IncomingRequest $request, ResponseInterface $response): ?ResponseInterface { - if ($cachedResponse = $this->cache->get($this->generateCacheKey($request))) { + $cachedResponse = $this->cache->get($this->generateCacheKey($request)); + + if (is_string($cachedResponse) && $cachedResponse !== '') { $cachedResponse = unserialize($cachedResponse); if ( @@ -131,7 +122,7 @@ public function get($request, ResponseInterface $response): ?ResponseInterface || ! isset($cachedResponse['output']) || ! isset($cachedResponse['headers']) ) { - throw new Exception('Error unserializing page cache'); + throw new RuntimeException('Error unserializing page cache'); } $headers = $cachedResponse['headers']; diff --git a/system/CodeIgniter.php b/system/CodeIgniter.php index 359e3ff7d08d..4156c99453a5 100644 --- a/system/CodeIgniter.php +++ b/system/CodeIgniter.php @@ -16,6 +16,7 @@ use CodeIgniter\Debug\Timer; use CodeIgniter\Events\Events; use CodeIgniter\Exceptions\FrameworkException; +use CodeIgniter\Exceptions\LogicException; use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\Filters\Filters; use CodeIgniter\HTTP\CLIRequest; @@ -28,7 +29,6 @@ use CodeIgniter\HTTP\ResponsableInterface; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\HTTP\URI; -use CodeIgniter\Router\Exceptions\RedirectException as DeprecatedRedirectException; use CodeIgniter\Router\RouteCollectionInterface; use CodeIgniter\Router\Router; use Config\App; @@ -41,7 +41,6 @@ use Kint\Renderer\CliRenderer; use Kint\Renderer\RichRenderer; use Locale; -use LogicException; use Throwable; /** @@ -56,7 +55,7 @@ class CodeIgniter /** * The current version of CodeIgniter Framework */ - public const CI_VERSION = '4.5.5'; + public const CI_VERSION = '4.6.4'; /** * App startup time. @@ -142,7 +141,7 @@ class CodeIgniter * web: Invoked by HTTP request * php-cli: Invoked by CLI via `php public/index.php` * - * @phpstan-var 'php-cli'|'web' + * @var 'php-cli'|'web'|null */ protected ?string $context = null; @@ -294,7 +293,7 @@ private function configureKint(): void RichRenderer::$theme = $config->richTheme; RichRenderer::$folder = $config->richFolder; - RichRenderer::$sort = $config->richSort; + if (isset($config->richObjectPlugins) && is_array($config->richObjectPlugins)) { RichRenderer::$value_plugins = $config->richObjectPlugins; } @@ -318,14 +317,14 @@ private function configureKint(): void * * @param bool $returnResponse Used for testing purposes only. * - * @return ResponseInterface|void + * @return ResponseInterface|null */ public function run(?RouteCollectionInterface $routes = null, bool $returnResponse = false) { if ($this->context === null) { throw new LogicException( 'Context must be set before run() is called. If you are upgrading from 4.1.x, ' - . 'you need to merge `public/index.php` and `spark` file from `vendor/codeigniter4/framework`.' + . 'you need to merge `public/index.php` and `spark` file from `vendor/codeigniter4/framework`.', ); } @@ -353,11 +352,8 @@ public function run(?RouteCollectionInterface $routes = null, bool $returnRespon } else { try { $this->response = $this->handleRequest($routes, config(Cache::class), $returnResponse); - } catch (DeprecatedRedirectException|ResponsableInterface $e) { + } catch (ResponsableInterface $e) { $this->outputBufferingEnd(); - if ($e instanceof DeprecatedRedirectException) { - $e = new RedirectException($e->getMessage(), $e->getCode(), $e); - } $this->response = $e->getResponse(); } catch (PageNotFoundException $e) { @@ -379,6 +375,8 @@ public function run(?RouteCollectionInterface $routes = null, bool $returnRespon } $this->sendResponse(); + + return null; } /** @@ -799,7 +797,7 @@ public function displayPerformanceMetrics(string $output): string return str_replace( ['{elapsed_time}', '{memory_usage}'], [(string) $this->totalTime, number_format(memory_get_peak_usage() / 1024 / 1024, 3)], - $output + $output, ); } @@ -863,7 +861,7 @@ protected function determinePath() * controller method and make the script go. If it's not able to, will * show the appropriate Page Not Found error. * - * @return ResponseInterface|string|void + * @return ResponseInterface|string|null */ protected function startController() { @@ -889,6 +887,8 @@ protected function startController() ) { throw PageNotFoundException::forControllerNotFound($this->controller, $this->method); } + + return null; } /** @@ -948,7 +948,9 @@ protected function display404errors(PageNotFoundException $e) $this->response->setStatusCode($e->getCode()); // Is there a 404 Override available? - if ($override = $this->router->get404Override()) { + $override = $this->router->get404Override(); + + if ($override !== null) { $returned = null; if ($override instanceof Closure) { @@ -979,7 +981,7 @@ protected function display404errors(PageNotFoundException $e) // Throws new PageNotFoundException and remove exception message on production. throw PageNotFoundException::forPageNotFound( - (ENVIRONMENT !== 'production' || ! $this->isWeb()) ? $e->getMessage() : null + (ENVIRONMENT !== 'production' || ! $this->isWeb()) ? $e->getMessage() : null, ); } @@ -1064,7 +1066,7 @@ public function storePreviousURL($uri) $uri->getAuthority(), $uri->getPath(), $uri->getQuery(), - $uri->getFragment() + $uri->getFragment(), )); } } @@ -1126,7 +1128,7 @@ protected function callExit($code) /** * Sets the app context. * - * @phpstan-param 'php-cli'|'web' $context + * @param 'php-cli'|'web' $context * * @return $this */ diff --git a/system/Commands/Database/CreateDatabase.php b/system/Commands/Database/CreateDatabase.php index 0c8d2016dc93..facd060abf6e 100644 --- a/system/Commands/Database/CreateDatabase.php +++ b/system/Commands/Database/CreateDatabase.php @@ -109,7 +109,7 @@ public function run(array $params) $config->{$group}['database'] = $name; if ($name !== ':memory:') { - $dbName = ! str_contains($name, DIRECTORY_SEPARATOR) ? WRITEPATH . $name : $name; + $dbName = str_contains($name, DIRECTORY_SEPARATOR) ? $name : WRITEPATH . $name; if (is_file($dbName)) { CLI::error("Database \"{$dbName}\" already exists.", 'light_gray', 'red'); diff --git a/system/Commands/Database/MigrateRollback.php b/system/Commands/Database/MigrateRollback.php index e1c788e7702e..cb6cbe3a7adb 100644 --- a/system/Commands/Database/MigrateRollback.php +++ b/system/Commands/Database/MigrateRollback.php @@ -74,7 +74,7 @@ public function run(array $params) $force = array_key_exists('f', $params) || CLI::getOption('f'); if (! $force && CLI::prompt(lang('Migrations.rollBackConfirm'), ['y', 'n']) === 'n') { - return; + return null; } // @codeCoverageIgnoreEnd } @@ -115,5 +115,7 @@ public function run(array $params) $this->showError($e); // @codeCoverageIgnoreEnd } + + return null; } } diff --git a/system/Commands/Database/ShowTableInfo.php b/system/Commands/Database/ShowTableInfo.php index 147b6eb61446..390bf586c51b 100644 --- a/system/Commands/Database/ShowTableInfo.php +++ b/system/Commands/Database/ShowTableInfo.php @@ -16,8 +16,9 @@ use CodeIgniter\CLI\BaseCommand; use CodeIgniter\CLI\CLI; use CodeIgniter\Database\BaseConnection; +use CodeIgniter\Database\TableName; +use CodeIgniter\Exceptions\InvalidArgumentException; use Config\Database; -use InvalidArgumentException; /** * Get table data if it exists in the database. @@ -144,7 +145,7 @@ public function run(array $params) $tableNameNo = CLI::promptByKey( ['Here is the list of your database tables:', 'Which table do you want to see?'], $tables, - 'required' + 'required', ); CLI::newLine(); @@ -174,7 +175,7 @@ private function showDBConfig(): void ]]; CLI::table( $data, - ['hostname', 'database', 'username', 'DBDriver', 'DBPrefix', 'port'] + ['hostname', 'database', 'username', 'DBDriver', 'DBPrefix', 'port'], ); } @@ -199,7 +200,7 @@ private function showDataOfTable(string $tableName, int $limitRows, int $limitFi CLI::newLine(); $this->removeDBPrefix(); - $thead = $this->db->getFieldNames($tableName); + $thead = $this->db->getFieldNames(TableName::fromActualName($this->db->DBPrefix, $tableName)); $this->restoreDBPrefix(); // If there is a field named `id`, sort by it. @@ -272,12 +273,12 @@ private function makeTableRows( string $tableName, int $limitRows, int $limitFieldValue, - ?string $sortField = null + ?string $sortField = null, ): array { $this->tbody = []; $this->removeDBPrefix(); - $builder = $this->db->table($tableName); + $builder = $this->db->table(TableName::fromActualName($this->db->DBPrefix, $tableName)); $builder->limit($limitRows); if ($sortField !== null) { $builder->orderBy($sortField, $this->sortDesc ? 'DESC' : 'ASC'); @@ -290,7 +291,7 @@ private function makeTableRows( static fn ($item): string => mb_strlen((string) $item) > $limitFieldValue ? mb_substr((string) $item, 0, $limitFieldValue) . '...' : (string) $item, - $row + $row, ); $this->tbody[] = $row; } diff --git a/system/Commands/Encryption/GenerateKey.php b/system/Commands/Encryption/GenerateKey.php index 21a582a06725..a3fdbd4393a9 100644 --- a/system/Commands/Encryption/GenerateKey.php +++ b/system/Commands/Encryption/GenerateKey.php @@ -182,7 +182,7 @@ protected function writeNewEncryptionKeyToFile(string $oldKey, string $newKey): $newFileContents = preg_replace( '/^[#\s]*encryption.key[=\s]*(?:hex2bin\:[a-f0-9]{64}|base64\:(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?)$/m', $replacementKey, - $oldFileContents + $oldFileContents, ); } diff --git a/system/Commands/Generators/CellGenerator.php b/system/Commands/Generators/CellGenerator.php index 57d79ac8902b..04c5bd8adf04 100644 --- a/system/Commands/Generators/CellGenerator.php +++ b/system/Commands/Generators/CellGenerator.php @@ -96,7 +96,7 @@ public function run(array $params) $viewName = preg_replace( '/([a-z][a-z0-9_\/\\\\]+)(_cell)$/i', '$1', - $viewName + $viewName, ) ?? $viewName; $namespace = substr($className, 0, strrpos($className, '\\') + 1); diff --git a/system/Commands/Generators/CommandGenerator.php b/system/Commands/Generators/CommandGenerator.php index 8c2ebcfb5d44..a0872f63c2ba 100644 --- a/system/Commands/Generators/CommandGenerator.php +++ b/system/Commands/Generators/CommandGenerator.php @@ -115,7 +115,7 @@ protected function prepare(string $class): string $class, ['{group}', '{command}'], [$group, $command], - ['type' => $type] + ['type' => $type], ); } } diff --git a/system/Commands/Generators/ControllerGenerator.php b/system/Commands/Generators/ControllerGenerator.php index c6f54cac2888..287f92f87c30 100644 --- a/system/Commands/Generators/ControllerGenerator.php +++ b/system/Commands/Generators/ControllerGenerator.php @@ -130,7 +130,7 @@ protected function prepare(string $class): string $class, ['{useStatement}', '{extends}'], [$useStatement, $extends], - ['type' => $rest] + ['type' => $rest], ); } } diff --git a/system/Commands/Generators/MigrationGenerator.php b/system/Commands/Generators/MigrationGenerator.php index b7d7d585e945..b5e64ec1bce1 100644 --- a/system/Commands/Generators/MigrationGenerator.php +++ b/system/Commands/Generators/MigrationGenerator.php @@ -112,10 +112,7 @@ protected function prepare(string $class): string $data['DBGroup'] = is_string($DBGroup) ? $DBGroup : 'default'; $data['DBDriver'] = config(Database::class)->{$data['DBGroup']}['DBDriver']; - /** @var SessionConfig|null $session */ - $session = config(SessionConfig::class); - - $data['matchIP'] = $session->matchIP; + $data['matchIP'] = config(SessionConfig::class)->matchIP; } return $this->parseTemplate($class, [], [], $data); diff --git a/system/Commands/Generators/TestGenerator.php b/system/Commands/Generators/TestGenerator.php index 35019c72b826..47f71294c823 100644 --- a/system/Commands/Generators/TestGenerator.php +++ b/system/Commands/Generators/TestGenerator.php @@ -76,6 +76,9 @@ class TestGenerator extends BaseCommand */ public function run(array $params) { + // Ensure tests are always suffixed with 'Test' + $params['suffix'] = null; + $this->component = 'Test'; $this->template = 'test.tpl.php'; @@ -102,9 +105,9 @@ protected function getNamespace(): string str_replace( '/', '\\', - $this->getOption('namespace') + $this->getOption('namespace'), ), - '\\' + '\\', ); } @@ -143,7 +146,7 @@ protected function buildPath(string $class): string CLI::error( lang('CLI.namespaceNotDefined', [$namespace]), 'light_gray', - 'red' + 'red', ); CLI::newLine(); @@ -157,7 +160,7 @@ protected function buildPath(string $class): string . str_replace( '\\', DIRECTORY_SEPARATOR, - trim(str_replace($namespace . '\\', '', $class), '\\') + trim(str_replace($namespace . '\\', '', $class), '\\'), ) . '.php'; return implode( @@ -165,28 +168,25 @@ protected function buildPath(string $class): string array_slice( explode(DIRECTORY_SEPARATOR, $file), 0, - -1 - ) + -1, + ), ) . DIRECTORY_SEPARATOR . $this->basename($file); } /** * Returns test file path for the namespace. */ - private function searchTestFilePath(string $namespace): ?string + private function searchTestFilePath(string $testNamespace): ?string { - $bases = service('autoloader')->getNamespace($namespace); - - $base = null; - - foreach ($bases as $candidate) { - if (str_contains($candidate, '/tests/')) { - $base = $candidate; + /** @var list $testPaths */ + $testPaths = service('autoloader')->getNamespace($testNamespace); - break; + foreach ($testPaths as $candidate) { + if (str_contains($candidate, DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR)) { + return $candidate; } } - return $base; + return null; } } diff --git a/system/Commands/Generators/Views/migration.tpl.php b/system/Commands/Generators/Views/migration.tpl.php index 321895e670c2..124b1b83c4c7 100644 --- a/system/Commands/Generators/Views/migration.tpl.php +++ b/system/Commands/Generators/Views/migration.tpl.php @@ -15,7 +15,7 @@ public function up() 'id' => ['type' => 'VARCHAR', 'constraint' => 128, 'null' => false], 'ip_address' => ['type' => 'VARCHAR', 'constraint' => 45, 'null' => false], - 'timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL', + '`timestamp` timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL', 'data' => ['type' => 'BLOB', 'null' => false], 'ip_address inet NOT NULL', diff --git a/system/Commands/ListCommands.php b/system/Commands/ListCommands.php index 3411b103430d..8761e2bb7bbc 100644 --- a/system/Commands/ListCommands.php +++ b/system/Commands/ListCommands.php @@ -71,6 +71,8 @@ class ListCommands extends BaseCommand /** * Displays the help for the spark cli script itself. + * + * @return int */ public function run(array $params) { @@ -78,7 +80,7 @@ public function run(array $params) ksort($commands); // Check for 'simple' format - return array_key_exists('simple', $params) || CLI::getOption('simple') + return array_key_exists('simple', $params) || CLI::getOption('simple') === true ? $this->listSimple($commands) : $this->listFull($commands); } @@ -86,7 +88,7 @@ public function run(array $params) /** * Lists the commands with accompanying info. * - * @return void + * @return int */ protected function listFull(array $commands) { @@ -124,17 +126,21 @@ protected function listFull(array $commands) CLI::newLine(); } } + + return EXIT_SUCCESS; } /** * Lists the commands only. * - * @return void + * @return int */ protected function listSimple(array $commands) { foreach (array_keys($commands) as $title) { CLI::write($title); } + + return EXIT_SUCCESS; } } diff --git a/system/Commands/Server/Serve.php b/system/Commands/Server/Serve.php index 82e58998a732..594e4e587e27 100644 --- a/system/Commands/Server/Serve.php +++ b/system/Commands/Server/Serve.php @@ -110,7 +110,7 @@ public function run(array $params) // to ensure our environment is set and it simulates basic mod_rewrite. passthru($php . ' -S ' . $host . ':' . $port . ' -t ' . $docroot . ' ' . $rewrite, $status); - if ($status && $this->portOffset < $this->tries) { + if ($status !== EXIT_SUCCESS && $this->portOffset < $this->tries) { $this->portOffset++; $this->run($params); diff --git a/system/Commands/Translation/LocalizationFinder.php b/system/Commands/Translation/LocalizationFinder.php index e7d4eff69663..e6557b74d1c4 100644 --- a/system/Commands/Translation/LocalizationFinder.php +++ b/system/Commands/Translation/LocalizationFinder.php @@ -70,7 +70,7 @@ public function run(array $params) if (! in_array($optionLocale, config(App::class)->supportedLocales, true)) { CLI::error( 'Error: "' . $optionLocale . '" is not supported. Supported locales: ' - . implode(', ', config(App::class)->supportedLocales) + . implode(', ', config(App::class)->supportedLocales), ); return EXIT_USER_INPUT; @@ -116,7 +116,7 @@ private function process(string $currentDir, string $currentLocale): void [ 'foundLanguageKeys' => $foundLanguageKeys, 'badLanguageKeys' => $badLanguageKeys, - 'countFiles' => $countFiles + 'countFiles' => $countFiles, ] = $this->findLanguageKeysInFiles($files); ksort($foundLanguageKeys); @@ -361,8 +361,7 @@ private function isSubDirectory(string $directory, string $rootDirectory): bool /** * @param list $files * - * @return array - * @phpstan-return array{'foundLanguageKeys': array>, 'badLanguageKeys': array>, 'countFiles': int} + * @return array{'foundLanguageKeys': array>, 'badLanguageKeys': array>, 'countFiles': int} */ private function findLanguageKeysInFiles(array $files): array { diff --git a/system/Commands/Translation/LocalizationSync.php b/system/Commands/Translation/LocalizationSync.php new file mode 100644 index 000000000000..6381ab33ccad --- /dev/null +++ b/system/Commands/Translation/LocalizationSync.php @@ -0,0 +1,202 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace CodeIgniter\Commands\Translation; + +use CodeIgniter\CLI\BaseCommand; +use CodeIgniter\CLI\CLI; +use CodeIgniter\Exceptions\LogicException; +use Config\App; +use ErrorException; +use FilesystemIterator; +use Locale; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; +use SplFileInfo; + +/** + * @see \CodeIgniter\Commands\Translation\LocalizationSyncTest + */ +class LocalizationSync extends BaseCommand +{ + protected $group = 'Translation'; + protected $name = 'lang:sync'; + protected $description = 'Synchronize translation files from one language to another.'; + protected $usage = 'lang:sync [options]'; + protected $arguments = []; + protected $options = [ + '--locale' => 'The original locale (en, ru, etc.).', + '--target' => 'Target locale (en, ru, etc.).', + ]; + private string $languagePath; + + public function run(array $params) + { + $optionTargetLocale = ''; + $optionLocale = $params['locale'] ?? Locale::getDefault(); + $this->languagePath = APPPATH . 'Language'; + + if (isset($params['target']) && $params['target'] !== '') { + $optionTargetLocale = $params['target']; + } + + if (! in_array($optionLocale, config(App::class)->supportedLocales, true)) { + CLI::error( + 'Error: "' . $optionLocale . '" is not supported. Supported locales: ' + . implode(', ', config(App::class)->supportedLocales), + ); + + return EXIT_USER_INPUT; + } + + if ($optionTargetLocale === '') { + CLI::error( + 'Error: "--target" is not configured. Supported locales: ' + . implode(', ', config(App::class)->supportedLocales), + ); + + return EXIT_USER_INPUT; + } + + if (! in_array($optionTargetLocale, config(App::class)->supportedLocales, true)) { + CLI::error( + 'Error: "' . $optionTargetLocale . '" is not supported. Supported locales: ' + . implode(', ', config(App::class)->supportedLocales), + ); + + return EXIT_USER_INPUT; + } + + if ($optionTargetLocale === $optionLocale) { + CLI::error( + 'Error: You cannot have the same values for "--target" and "--locale".', + ); + + return EXIT_USER_INPUT; + } + + if (ENVIRONMENT === 'testing') { + $this->languagePath = SUPPORTPATH . 'Language'; + } + + if ($this->process($optionLocale, $optionTargetLocale) === EXIT_ERROR) { + return EXIT_ERROR; + } + + CLI::write('All operations done!'); + + return EXIT_SUCCESS; + } + + private function process(string $originalLocale, string $targetLocale): int + { + $originalLocaleDir = $this->languagePath . DIRECTORY_SEPARATOR . $originalLocale; + $targetLocaleDir = $this->languagePath . DIRECTORY_SEPARATOR . $targetLocale; + + if (! is_dir($originalLocaleDir)) { + CLI::error( + 'Error: The "' . clean_path($originalLocaleDir) . '" directory was not found.', + ); + + return EXIT_ERROR; + } + + // Unifying the error - mkdir() may cause an exception. + try { + if (! is_dir($targetLocaleDir) && ! mkdir($targetLocaleDir, 0775)) { + throw new ErrorException(); + } + } catch (ErrorException $e) { + CLI::error( + 'Error: The target directory "' . clean_path($targetLocaleDir) . '" cannot be accessed.', + ); + + return EXIT_ERROR; + } + + $iterator = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator( + $originalLocaleDir, + FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS, + ), + ); + + /** + * @var array $files + */ + $files = iterator_to_array($iterator, true); + ksort($files); + + foreach ($files as $originalLanguageFile) { + if ($originalLanguageFile->getExtension() !== 'php') { + continue; + } + + $targetLanguageFile = $targetLocaleDir . DIRECTORY_SEPARATOR . $originalLanguageFile->getFilename(); + + $targetLanguageKeys = []; + $originalLanguageKeys = include $originalLanguageFile; + + if (is_file($targetLanguageFile)) { + $targetLanguageKeys = include $targetLanguageFile; + } + + $targetLanguageKeys = $this->mergeLanguageKeys($originalLanguageKeys, $targetLanguageKeys, $originalLanguageFile->getBasename('.php')); + + $content = "|string|null> $originalLanguageKeys + * @param array|string|null> $targetLanguageKeys + * + * @return array|string|null> + */ + private function mergeLanguageKeys(array $originalLanguageKeys, array $targetLanguageKeys, string $prefix = ''): array + { + $mergedLanguageKeys = []; + + foreach ($originalLanguageKeys as $key => $value) { + $placeholderValue = $prefix !== '' ? $prefix . '.' . $key : $key; + + if (is_string($value)) { + // Keep the old value + // TODO: The value type may not match the original one + if (array_key_exists($key, $targetLanguageKeys)) { + $mergedLanguageKeys[$key] = $targetLanguageKeys[$key]; + + continue; + } + + // Set new key with placeholder + $mergedLanguageKeys[$key] = $placeholderValue; + } elseif (is_array($value)) { + if (! array_key_exists($key, $targetLanguageKeys)) { + $mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, [], $placeholderValue); + + continue; + } + + $mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, $targetLanguageKeys[$key], $placeholderValue); + } else { + throw new LogicException('Value for the key "' . $placeholderValue . '" is of the wrong type. Only "array" or "string" is allowed.'); + } + } + + return $mergedLanguageKeys; + } +} diff --git a/system/Commands/Utilities/ConfigCheck.php b/system/Commands/Utilities/ConfigCheck.php index 7d6dc332ca45..4583c67dae87 100644 --- a/system/Commands/Utilities/ConfigCheck.php +++ b/system/Commands/Utilities/ConfigCheck.php @@ -73,7 +73,7 @@ final class ConfigCheck extends BaseCommand protected $options = []; /** - * {@inheritDoc} + * @return int */ public function run(array $params) { @@ -109,7 +109,7 @@ public function run(array $params) CLI::write($this->getKintD($config)); } else { CLI::write( - CLI::color($this->getVarDump($config), 'cyan') + CLI::color($this->getVarDump($config), 'cyan'), ); } @@ -150,7 +150,7 @@ private function getVarDump(object $config): string return preg_replace( '!.*system/Commands/Utilities/ConfigCheck.php.*\n!u', '', - $output + $output, ); } } diff --git a/system/Commands/Utilities/Environment.php b/system/Commands/Utilities/Environment.php index 17a08d21d2ce..22794fe9d51d 100644 --- a/system/Commands/Utilities/Environment.php +++ b/system/Commands/Utilities/Environment.php @@ -80,7 +80,7 @@ final class Environment extends BaseCommand ]; /** - * {@inheritDoc} + * @return int */ public function run(array $params) { @@ -88,7 +88,7 @@ public function run(array $params) CLI::write(sprintf('Your environment is currently set as %s.', CLI::color($_SERVER['CI_ENVIRONMENT'] ?? ENVIRONMENT, 'green'))); CLI::newLine(); - return; + return EXIT_ERROR; } $env = strtolower(array_shift($params)); @@ -98,21 +98,21 @@ public function run(array $params) CLI::error('You will not be able to run spark under a "testing" environment.', 'light_gray', 'red'); CLI::newLine(); - return; + return EXIT_ERROR; } if (! in_array($env, self::$knownTypes, true)) { CLI::error(sprintf('Invalid environment type "%s". Expected one of "%s".', $env, implode('" and "', self::$knownTypes)), 'light_gray', 'red'); CLI::newLine(); - return; + return EXIT_ERROR; } if (! $this->writeNewEnvironmentToEnvFile($env)) { CLI::error('Error in writing new environment to .env file.', 'light_gray', 'red'); CLI::newLine(); - return; + return EXIT_ERROR; } // force DotEnv to reload the new environment @@ -124,6 +124,8 @@ public function run(array $params) CLI::write(sprintf('Environment is successfully changed to "%s".', $env), 'green'); CLI::write('The ENVIRONMENT constant will be changed in the next script execution.'); CLI::newLine(); + + return EXIT_SUCCESS; } /** @@ -151,7 +153,7 @@ private function writeNewEnvironmentToEnvFile(string $newEnv): bool return file_put_contents( $envFile, - preg_replace($pattern, "\nCI_ENVIRONMENT = {$newEnv}", file_get_contents($envFile), -1, $count) + preg_replace($pattern, "\nCI_ENVIRONMENT = {$newEnv}", file_get_contents($envFile), -1, $count), ) !== false && $count > 0; } } diff --git a/system/Commands/Utilities/FilterCheck.php b/system/Commands/Utilities/FilterCheck.php index 56fcdb00b971..e2043fe9a3a4 100644 --- a/system/Commands/Utilities/FilterCheck.php +++ b/system/Commands/Utilities/FilterCheck.php @@ -73,13 +73,7 @@ class FilterCheck extends BaseCommand */ public function run(array $params) { - $tbody = []; - if (! isset($params[0], $params[1])) { - CLI::error('You must specify a HTTP verb and a route.'); - CLI::write(' Usage: ' . $this->usage); - CLI::write('Example: filter:check GET /'); - CLI::write(' filter:check PUT products/1'); - + if (! $this->checkParams($params)) { return EXIT_ERROR; } @@ -100,22 +94,45 @@ public function run(array $params) CLI::color( '"' . strtoupper($method) . ' ' . $route . '"', 'black', - 'light_gray' + 'light_gray', ), ); return EXIT_ERROR; } - $filters = $this->addRequiredFilters($filterCollector, $filters); + $this->showTable($filterCollector, $filters, $method, $route); + $this->showFilterClasses($filterCollector, $method, $route); - $tbody[] = [ - strtoupper($method), - $route, - implode(' ', $filters['before']), - implode(' ', $filters['after']), - ]; + return EXIT_SUCCESS; + } + /** + * @param array $params + */ + private function checkParams(array $params): bool + { + if (! isset($params[0], $params[1])) { + CLI::error('You must specify a HTTP verb and a route.'); + CLI::write(' Usage: ' . $this->usage); + CLI::write('Example: filter:check GET /'); + CLI::write(' filter:check PUT products/1'); + + return false; + } + + return true; + } + + /** + * @param array{before: list, after: list} $filters + */ + private function showTable( + FilterCollector $filterCollector, + array $filters, + string $method, + string $route, + ): void { $thead = [ 'Method', 'Route', @@ -123,33 +140,60 @@ public function run(array $params) 'After Filters', ]; - CLI::table($tbody, $thead); + $required = $filterCollector->getRequiredFilters(); - return EXIT_SUCCESS; + $coloredRequired = $this->colorItems($required); + + $before = array_merge($coloredRequired['before'], $filters['before']); + $after = array_merge($filters['after'], $coloredRequired['after']); + + $tbody = []; + $tbody[] = [ + strtoupper($method), + $route, + implode(' ', $before), + implode(' ', $after), + ]; + + CLI::table($tbody, $thead); } - private function addRequiredFilters(FilterCollector $filterCollector, array $filters): array + /** + * Color all elements of the array. + * + * @param array $array + * + * @return array + */ + private function colorItems(array $array): array { - $output = []; + return array_map(function ($item): array|string { + if (is_array($item)) { + return $this->colorItems($item); + } - $required = $filterCollector->getRequiredFilters(); + return CLI::color($item, 'yellow'); + }, $array); + } - $colored = []; + private function showFilterClasses( + FilterCollector $filterCollector, + string $method, + string $route, + ): void { + $requiredFilterClasses = $filterCollector->getRequiredFilterClasses(); + $filterClasses = $filterCollector->getClasses($method, $route); - foreach ($required['before'] as $filter) { - $filter = CLI::color($filter, 'yellow'); - $colored[] = $filter; - } - $output['before'] = array_merge($colored, $filters['before']); + $coloredRequiredFilterClasses = $this->colorItems($requiredFilterClasses); - $colored = []; + $classList = [ + 'before' => array_merge($coloredRequiredFilterClasses['before'], $filterClasses['before']), + 'after' => array_merge($filterClasses['after'], $coloredRequiredFilterClasses['after']), + ]; - foreach ($required['after'] as $filter) { - $filter = CLI::color($filter, 'yellow'); - $colored[] = $filter; + foreach ($classList as $position => $classes) { + CLI::write(ucfirst($position) . ' Filter Classes:', 'cyan'); + CLI::write(implode(' → ', $classes)); } - $output['after'] = array_merge($filters['after'], $colored); - - return $output; } } diff --git a/system/Commands/Utilities/Namespaces.php b/system/Commands/Utilities/Namespaces.php index c16f692cfb37..8dda8ce0732e 100644 --- a/system/Commands/Utilities/Namespaces.php +++ b/system/Commands/Utilities/Namespaces.php @@ -120,10 +120,10 @@ private function outputAllNamespaces(array $params): array private function truncate(string $string, int $max): string { - $length = strlen($string); + $length = mb_strlen($string); if ($length > $max) { - return substr($string, 0, $max - 3) . '...'; + return mb_substr($string, 0, $max - 3) . '...'; } return $string; diff --git a/system/Commands/Utilities/Optimize.php b/system/Commands/Utilities/Optimize.php index fa7612d524a6..1a103a1b9c52 100644 --- a/system/Commands/Utilities/Optimize.php +++ b/system/Commands/Utilities/Optimize.php @@ -17,8 +17,8 @@ use CodeIgniter\Autoloader\FileLocatorCached; use CodeIgniter\CLI\BaseCommand; use CodeIgniter\CLI\CLI; +use CodeIgniter\Exceptions\RuntimeException; use CodeIgniter\Publisher\Publisher; -use RuntimeException; /** * Optimize for production. @@ -55,7 +55,7 @@ final class Optimize extends BaseCommand protected $usage = 'optimize'; /** - * {@inheritDoc} + * @return int */ public function run(array $params) { @@ -63,13 +63,13 @@ public function run(array $params) $this->enableCaching(); $this->clearCache(); $this->removeDevPackages(); + + return EXIT_SUCCESS; } catch (RuntimeException) { CLI::error('The "spark optimize" failed.'); return EXIT_ERROR; } - - return EXIT_SUCCESS; } private function clearCache(): void @@ -110,13 +110,13 @@ private function enableCaching(): void [ 'public bool $configCacheEnabled = false;' => 'public bool $configCacheEnabled = true;', 'public bool $locatorCacheEnabled = false;' => 'public bool $locatorCacheEnabled = true;', - ] + ], ); if ($result) { CLI::write( 'Config Caching and FileLocator Caching are enabled in "app/Config/Optimize.php".', - 'green' + 'green', ); return; diff --git a/system/Commands/Utilities/PhpIniCheck.php b/system/Commands/Utilities/PhpIniCheck.php index 0426f9078b77..f25518fb283d 100644 --- a/system/Commands/Utilities/PhpIniCheck.php +++ b/system/Commands/Utilities/PhpIniCheck.php @@ -14,6 +14,7 @@ namespace CodeIgniter\Commands\Utilities; use CodeIgniter\CLI\BaseCommand; +use CodeIgniter\CLI\CLI; use CodeIgniter\Security\CheckPhpIni; /** @@ -41,7 +42,7 @@ final class PhpIniCheck extends BaseCommand * * @var string */ - protected $description = 'Check your php.ini values.'; + protected $description = 'Check your php.ini values in production environment.'; /** * The Command's usage @@ -56,6 +57,7 @@ final class PhpIniCheck extends BaseCommand * @var array */ protected $arguments = [ + 'opcache' => 'Check detail opcache values in production environment.', ]; /** @@ -66,11 +68,28 @@ final class PhpIniCheck extends BaseCommand protected $options = []; /** - * {@inheritDoc} + * @return int */ public function run(array $params) { - CheckPhpIni::run(); + if (isset($params[0]) && ! in_array($params[0], array_keys($this->arguments), true)) { + CLI::error('You must specify a correct argument.'); + CLI::write(' Usage: ' . $this->usage); + CLI::write(' Example: phpini:check opcache'); + CLI::write('Arguments:'); + + $length = max(array_map(strlen(...), array_keys($this->arguments))); + + foreach ($this->arguments as $argument => $description) { + CLI::write(CLI::color($this->setPad($argument, $length, 2, 2), 'green') . $description); + } + + return EXIT_ERROR; + } + + $argument = $params[0] ?? null; + + CheckPhpIni::run(argument: $argument); return EXIT_SUCCESS; } diff --git a/system/Commands/Utilities/Publish.php b/system/Commands/Utilities/Publish.php index 3e19685cba81..13ffa96eafc6 100644 --- a/system/Commands/Utilities/Publish.php +++ b/system/Commands/Utilities/Publish.php @@ -67,17 +67,24 @@ class Publish extends BaseCommand * * @var array */ - protected $options = []; + protected $options = [ + '--namespace' => 'The namespace from which to search for files to publish. By default, all namespaces are analysed.', + ]; /** * Displays the help for the spark cli script itself. */ public function run(array $params) { - $directory = array_shift($params) ?? 'Publishers'; + $directory = $params[0] ?? 'Publishers'; + $namespace = $params['namespace'] ?? ''; - if ([] === $publishers = Publisher::discover($directory)) { - CLI::write(lang('Publisher.publishMissing', [$directory])); + if ([] === $publishers = Publisher::discover($directory, $namespace)) { + if ($namespace === '') { + CLI::write(lang('Publisher.publishMissing', [$directory])); + } else { + CLI::write(lang('Publisher.publishMissingNamespace', [$directory, $namespace])); + } return; } diff --git a/system/Commands/Utilities/Routes.php b/system/Commands/Utilities/Routes.php index 9adcc1bc39e7..2a6122cab01c 100644 --- a/system/Commands/Utilities/Routes.php +++ b/system/Commands/Utilities/Routes.php @@ -86,7 +86,7 @@ public function run(array $params) $host = $params['host'] ?? null; // Set HTTP_HOST - if ($host) { + if ($host !== null) { $request = service('request'); $_SERVER = $request->getServer(); $_SERVER['HTTP_HOST'] = $host; @@ -96,7 +96,7 @@ public function run(array $params) $collection = service('routes')->loadRoutes(); // Reset HTTP_HOST - if ($host) { + if ($host !== null) { unset($_SERVER['HTTP_HOST']); } @@ -133,13 +133,15 @@ public function run(array $params) $collection->getDefaultController(), $collection->getDefaultMethod(), $methods, - $collection->getRegisteredControllers('*') + $collection->getRegisteredControllers('*'), ); $autoRoutes = $autoRouteCollector->get(); // Check for Module Routes. - if ($routingConfig = config(Routing::class)) { + $routingConfig = config(Routing::class); + + if ($routingConfig instanceof Routing) { foreach ($routingConfig->moduleRoutes as $uri => $namespace) { $autoRouteCollector = new AutoRouteCollectorImproved( $namespace, @@ -147,7 +149,7 @@ public function run(array $params) $collection->getDefaultMethod(), $methods, $collection->getRegisteredControllers('*'), - $uri + $uri, ); $autoRoutes = [...$autoRoutes, ...$autoRouteCollector->get()]; @@ -157,7 +159,7 @@ public function run(array $params) $autoRouteCollector = new AutoRouteCollector( $collection->getDefaultNamespace(), $collection->getDefaultController(), - $collection->getDefaultMethod() + $collection->getDefaultMethod(), ); $autoRoutes = $autoRouteCollector->get(); @@ -185,10 +187,10 @@ public function run(array $params) // Sort by Handler. if ($sortByHandler) { - usort($tbody, static fn ($handler1, $handler2) => strcmp($handler1[3], $handler2[3])); + usort($tbody, static fn ($handler1, $handler2): int => strcmp($handler1[3], $handler2[3])); } - if ($host) { + if ($host !== null) { CLI::write('Host: ' . $host); } diff --git a/system/Commands/Utilities/Routes/AutoRouteCollector.php b/system/Commands/Utilities/Routes/AutoRouteCollector.php index 73009b9c9eb8..3b91d365ac80 100644 --- a/system/Commands/Utilities/Routes/AutoRouteCollector.php +++ b/system/Commands/Utilities/Routes/AutoRouteCollector.php @@ -41,7 +41,7 @@ public function get(): array $output = $reader->read( $class, $this->defaultController, - $this->defaultMethod + $this->defaultMethod, ); foreach ($output as $item) { diff --git a/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php b/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php index 4c705fd439b1..d29f6a9b7049 100644 --- a/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php +++ b/system/Commands/Utilities/Routes/AutoRouterImproved/AutoRouteCollector.php @@ -36,7 +36,7 @@ public function __construct( private readonly string $defaultMethod, private readonly array $httpMethods, private readonly array $protectedControllers, - private readonly string $prefix = '' + private readonly string $prefix = '', ) { } @@ -59,7 +59,7 @@ public function get(): array $routes = $reader->read( $class, $this->defaultController, - $this->defaultMethod + $this->defaultMethod, ); if ($routes === []) { @@ -99,7 +99,7 @@ public function get(): array * * @return list> */ - private function addFilters($routes) + private function addFilters(array $routes): array { $filterCollector = new FilterCollector(true); @@ -122,8 +122,10 @@ private function addFilters($routes) $filtersShortest = $filterCollector->get($route['method'], $routePath . $sampleUri); // Get common array elements - $filters['before'] = array_intersect($filtersLongest['before'], $filtersShortest['before']); - $filters['after'] = array_intersect($filtersLongest['after'], $filtersShortest['after']); + $filters = [ + 'before' => array_intersect($filtersLongest['before'], $filtersShortest['before']), + 'after' => array_intersect($filtersLongest['after'], $filtersShortest['after']), + ]; $route['before'] = implode(' ', array_map(class_basename(...), $filters['before'])); $route['after'] = implode(' ', array_map(class_basename(...), $filters['after'])); diff --git a/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php b/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php index e08a16ff7a60..a0a98afc829a 100644 --- a/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php +++ b/system/Commands/Utilities/Routes/AutoRouterImproved/ControllerMethodReader.php @@ -33,7 +33,7 @@ final class ControllerMethodReader */ public function __construct( private readonly string $namespace, - private readonly array $httpMethods + private readonly array $httpMethods, ) { $config = config(Routing::class); $this->translateURIDashes = $config->translateURIDashes; @@ -78,7 +78,7 @@ public function read(string $class, string $defaultController = 'Home', string $ $classname, $methodName, $httpVerb, - $method + $method, ); if ($routeForDefaultController !== []) { @@ -193,7 +193,7 @@ private function translateToUri(string $string): string { if ($this->translateUriToCamelCase) { $string = strtolower( - preg_replace('/([a-z\d])([A-Z])/', '$1-$2', $string) + preg_replace('/([a-z\d])([A-Z])/', '$1-$2', $string), ); } elseif ($this->translateURIDashes) { $string = str_replace('_', '-', $string); @@ -214,14 +214,14 @@ private function getRouteForDefaultController( string $classname, string $methodName, string $httpVerb, - ReflectionMethod $method + ReflectionMethod $method, ): array { $output = []; if ($classShortname === $defaultController) { $pattern = '#' . preg_quote(lcfirst($defaultController), '#') . '\z#'; $routeWithoutController = rtrim(preg_replace($pattern, '', $uriByClass), '/'); - $routeWithoutController = $routeWithoutController ?: '/'; + $routeWithoutController = $routeWithoutController !== '' && $routeWithoutController !== '0' ? $routeWithoutController : '/'; [$params, $routeParams] = $this->getParameters($method); diff --git a/system/Commands/Utilities/Routes/ControllerFinder.php b/system/Commands/Utilities/Routes/ControllerFinder.php index 71de1681b547..400e30e82d2e 100644 --- a/system/Commands/Utilities/Routes/ControllerFinder.php +++ b/system/Commands/Utilities/Routes/ControllerFinder.php @@ -28,7 +28,7 @@ final class ControllerFinder * @param string $namespace namespace to search */ public function __construct( - private readonly string $namespace + private readonly string $namespace, ) { $this->locator = service('locator'); } diff --git a/system/Commands/Utilities/Routes/ControllerMethodReader.php b/system/Commands/Utilities/Routes/ControllerMethodReader.php index c443b669465a..cd47085932bb 100644 --- a/system/Commands/Utilities/Routes/ControllerMethodReader.php +++ b/system/Commands/Utilities/Routes/ControllerMethodReader.php @@ -57,7 +57,7 @@ public function read(string $class, string $defaultController = 'Home', string $ $defaultController, $uriByClass, $classname, - $methodName + $methodName, ); $output = [...$output, ...$routeWithoutController]; @@ -89,7 +89,7 @@ public function read(string $class, string $defaultController = 'Home', string $ $defaultController, $uriByClass, $classname, - $methodName + $methodName, ); $output = [...$output, ...$routeWithoutController]; @@ -153,7 +153,7 @@ private function getRouteWithoutController( string $defaultController, string $uriByClass, string $classname, - string $methodName + string $methodName, ): array { if ($classShortname !== $defaultController) { return []; @@ -161,7 +161,7 @@ private function getRouteWithoutController( $pattern = '#' . preg_quote(lcfirst($defaultController), '#') . '\z#'; $routeWithoutController = rtrim(preg_replace($pattern, '', $uriByClass), '/'); - $routeWithoutController = $routeWithoutController ?: '/'; + $routeWithoutController = $routeWithoutController !== '' && $routeWithoutController !== '0' ? $routeWithoutController : '/'; return [[ 'route' => $routeWithoutController, diff --git a/system/Commands/Utilities/Routes/FilterCollector.php b/system/Commands/Utilities/Routes/FilterCollector.php index b646dcb250a1..052884a644b7 100644 --- a/system/Commands/Utilities/Routes/FilterCollector.php +++ b/system/Commands/Utilities/Routes/FilterCollector.php @@ -32,7 +32,7 @@ public function __construct( * * If set to true, route filters are not found. */ - private readonly bool $resetRoutes = false + private readonly bool $resetRoutes = false, ) { } @@ -42,7 +42,7 @@ public function __construct( * @param string $method HTTP verb like `GET`,`POST` or `CLI`. * @param string $uri URI path to find filters for * - * @return array{before: list, after: list} array of filter alias or classname + * @return array{before: list, after: list} array of alias/classname:args */ public function get(string $method, string $uri): array { @@ -50,7 +50,7 @@ public function get(string $method, string $uri): array @trigger_error( 'Passing lowercase HTTP method "' . $method . '" is deprecated.' . ' Use uppercase HTTP method like "' . strtoupper($method) . '".', - E_USER_DEPRECATED + E_USER_DEPRECATED, ); } @@ -78,10 +78,52 @@ public function get(string $method, string $uri): array return $finder->find($uri); } + /** + * Returns filter classes for the URI + * + * @param string $method HTTP verb like `GET`,`POST` or `CLI`. + * @param string $uri URI path to find filters for + * + * @return array{before: list, after: list} array of classname:args + */ + public function getClasses(string $method, string $uri): array + { + if ($method === strtolower($method)) { + @trigger_error( + 'Passing lowercase HTTP method "' . $method . '" is deprecated.' + . ' Use uppercase HTTP method like "' . strtoupper($method) . '".', + E_USER_DEPRECATED, + ); + } + + /** + * @deprecated 4.5.0 + * @TODO Remove this in the future. + */ + $method = strtoupper($method); + + if ($method === 'CLI') { + return [ + 'before' => [], + 'after' => [], + ]; + } + + $request = service('incomingrequest', null, false); + $request->setMethod($method); + + $router = $this->createRouter($request); + $filters = $this->createFilters($request); + + $finder = new FilterFinder($router, $filters); + + return $finder->findClasses($uri); + } + /** * Returns Required Filters * - * @return array{before: list, after: list} array of filter alias or classname + * @return array{before: list, after: list} array of aliases */ public function getRequiredFilters(): array { @@ -96,6 +138,24 @@ public function getRequiredFilters(): array return $finder->getRequiredFilters(); } + /** + * Returns Required Filter class list + * + * @return array{before: list, after: list} array of classnames + */ + public function getRequiredFilterClasses(): array + { + $request = service('incomingrequest', null, false); + $request->setMethod(Method::GET); + + $router = $this->createRouter($request); + $filters = $this->createFilters($request); + + $finder = new FilterFinder($router, $filters); + + return $finder->getRequiredFilterClasses(); + } + private function createRouter(Request $request): Router { $routes = service('routes'); diff --git a/system/Commands/Utilities/Routes/FilterFinder.php b/system/Commands/Utilities/Routes/FilterFinder.php index 7971e5c1be84..f34ea26aa702 100644 --- a/system/Commands/Utilities/Routes/FilterFinder.php +++ b/system/Commands/Utilities/Routes/FilterFinder.php @@ -46,23 +46,20 @@ private function getRouteFilters(string $uri): array /** * @param string $uri URI path to find filters for * - * @return array{before: list, after: list} array of filter alias or classname + * @return array{before: list, after: list} array of alias/classname:args */ public function find(string $uri): array { $this->filters->reset(); - // Add route filters try { + // Add route filters $routeFilters = $this->getRouteFilters($uri); - $this->filters->enableFilters($routeFilters, 'before'); - $oldFilterOrder = config(Feature::class)->oldFilterOrder ?? false; if (! $oldFilterOrder) { $routeFilters = array_reverse($routeFilters); } - $this->filters->enableFilters($routeFilters, 'after'); $this->filters->initialize($uri); @@ -81,10 +78,66 @@ public function find(string $uri): array } } + /** + * @param string $uri URI path to find filters for + * + * @return array{before: list, after: list} array of classname:args + */ + public function findClasses(string $uri): array + { + $this->filters->reset(); + + try { + // Add route filters + $routeFilters = $this->getRouteFilters($uri); + $this->filters->enableFilters($routeFilters, 'before'); + $oldFilterOrder = config(Feature::class)->oldFilterOrder ?? false; + if (! $oldFilterOrder) { + $routeFilters = array_reverse($routeFilters); + } + $this->filters->enableFilters($routeFilters, 'after'); + + $this->filters->initialize($uri); + + $filterClassList = $this->filters->getFiltersClass(); + + $filterClasses = [ + 'before' => [], + 'after' => [], + ]; + + foreach ($filterClassList['before'] as $classInfo) { + $classWithArguments = ($classInfo[1] === []) ? $classInfo[0] + : $classInfo[0] . ':' . implode(',', $classInfo[1]); + + $filterClasses['before'][] = $classWithArguments; + } + + foreach ($filterClassList['after'] as $classInfo) { + $classWithArguments = ($classInfo[1] === []) ? $classInfo[0] + : $classInfo[0] . ':' . implode(',', $classInfo[1]); + + $filterClasses['after'][] = $classWithArguments; + } + + return $filterClasses; + } catch (RedirectException) { + return [ + 'before' => [], + 'after' => [], + ]; + } catch (BadRequestException|PageNotFoundException) { + return [ + 'before' => [''], + 'after' => [''], + ]; + } + } + /** * Returns Required Filters * - * @return array{before: list, after:list} + * @return array{before: list, after:list} array of aliases */ public function getRequiredFilters(): array { @@ -96,4 +149,31 @@ public function getRequiredFilters(): array 'after' => $requiredAfter, ]; } + + /** + * Returns Required Filter classes + * + * @return array{before: list, after:list} + */ + public function getRequiredFilterClasses(): array + { + $before = $this->filters->getRequiredClasses('before'); + $after = $this->filters->getRequiredClasses('after'); + + $requiredBefore = []; + $requiredAfter = []; + + foreach ($before as $classInfo) { + $requiredBefore[] = $classInfo[0]; + } + + foreach ($after as $classInfo) { + $requiredAfter[] = $classInfo[0]; + } + + return [ + 'before' => $requiredBefore, + 'after' => $requiredAfter, + ]; + } } diff --git a/system/Commands/Utilities/Routes/SampleURIGenerator.php b/system/Commands/Utilities/Routes/SampleURIGenerator.php index 45eb2f93201b..a0e5f09bc2cb 100644 --- a/system/Commands/Utilities/Routes/SampleURIGenerator.php +++ b/system/Commands/Utilities/Routes/SampleURIGenerator.php @@ -57,7 +57,7 @@ public function get(string $routeKey): string $sampleUri = str_replace( '{locale}', config(App::class)->defaultLocale, - $routeKey + $routeKey, ); } diff --git a/system/Common.php b/system/Common.php index 85db03f2870c..41b16100c295 100644 --- a/system/Common.php +++ b/system/Common.php @@ -20,6 +20,8 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\ConnectionInterface; use CodeIgniter\Debug\Timer; +use CodeIgniter\Exceptions\InvalidArgumentException; +use CodeIgniter\Exceptions\RuntimeException; use CodeIgniter\Files\Exceptions\FileNotFoundException; use CodeIgniter\HTTP\CLIRequest; use CodeIgniter\HTTP\Exceptions\HTTPException; @@ -67,8 +69,7 @@ function app_timezone(): string * cache()->save('foo', 'bar'); * $foo = cache('bar'); * - * @return array|bool|CacheInterface|float|int|object|string|null - * @phpstan-return ($key is null ? CacheInterface : array|bool|float|int|object|string|null) + * @return ($key is null ? CacheInterface : mixed) */ function cache(?string $key = null) { @@ -122,7 +123,6 @@ function clean_path(string $path): string */ function command(string $command) { - $runner = service('commands'); $regexString = '([^\s]+?)(?:\s|(? */ $params = []; + $command = array_shift($args); $optionValue = false; foreach ($args as $i => $arg) { @@ -185,7 +186,7 @@ function command(string $command) } ob_start(); - $runner->run($command, $params); + service('commands')->run($command, $params); return ob_get_clean(); } @@ -199,8 +200,7 @@ function command(string $command) * * @param class-string|string $name * - * @return ConfigTemplate|null - * @phpstan-return ($name is class-string ? ConfigTemplate : object|null) + * @return ($name is class-string ? ConfigTemplate : object|null) */ function config(string $name, bool $getShared = true) { @@ -216,9 +216,19 @@ function config(string $name, bool $getShared = true) /** * Simpler way to create a new Cookie instance. * - * @param string $name Name of the cookie - * @param string $value Value of the cookie - * @param array $options Array of options to be passed to the cookie + * @param string $name Name of the cookie + * @param string $value Value of the cookie + * @param array{ + * prefix?: string, + * max-age?: int|numeric-string, + * expires?: DateTimeInterface|int|string, + * path?: string, + * domain?: string, + * secure?: bool, + * httponly?: bool, + * samesite?: string, + * raw?: bool + * } $options Cookie configuration options * * @throws CookieException */ @@ -352,7 +362,27 @@ function csp_script_nonce(): string * If $getShared === false then a new connection instance will be provided, * otherwise it will all calls will return the same instance. * - * @param array|ConnectionInterface|string|null $db + * @param array{ + * DSN?: string, + * hostname?: string, + * username?: string, + * password?: string, + * database?: string, + * DBDriver?: 'MySQLi'|'OCI8'|'Postgre'|'SQLite3'|'SQLSRV', + * DBPrefix?: string, + * pConnect?: bool, + * DBDebug?: bool, + * charset?: string, + * DBCollat?: string, + * swapPre?: string, + * encrypt?: bool, + * compress?: bool, + * strictOn?: bool, + * failover?: array, + * port?: int, + * dateFormat?: array, + * foreignKeys?: bool + * }|ConnectionInterface|string|null $db * * @return BaseConnection */ @@ -369,9 +399,9 @@ function db_connect($db = null, bool $getShared = true) * retrieving values set from the .env file for * use in config files. * - * @param string|null $default + * @param array|bool|float|int|object|string|null $default * - * @return bool|string|null + * @return array|bool|float|int|object|string|null */ function env(string $key, $default = null) { @@ -402,13 +432,13 @@ function env(string $key, $default = null) * If $data is an array, then it loops over it, escaping each * 'value' of the key/value pairs. * - * @param array|string $data - * @phpstan-param 'html'|'js'|'css'|'url'|'attr'|'raw' $context - * @param string|null $encoding Current encoding for escaping. - * If not UTF-8, we convert strings from this encoding - * pre-escaping and back to this encoding post-escaping. + * @param array|string>|string $data + * @param 'attr'|'css'|'html'|'js'|'raw'|'url' $context + * @param string|null $encoding Current encoding for escaping. + * If not UTF-8, we convert strings from this encoding + * pre-escaping and back to this encoding post-escaping. * - * @return array|string + * @return ($data is string ? string : array|string>) * * @throws InvalidArgumentException */ @@ -441,7 +471,7 @@ function esc($data, string $context = 'html', ?string $encoding = null) $escaper = new Escaper($encoding); } - if ($encoding && $escaper->getEncoding() !== $encoding) { + if ($encoding !== null && $escaper->getEncoding() !== $encoding) { $escaper = new Escaper($encoding); } @@ -470,7 +500,7 @@ function esc($data, string $context = 'html', ?string $encoding = null) function force_https( int $duration = 31_536_000, ?RequestInterface $request = null, - ?ResponseInterface $response = null + ?ResponseInterface $response = null, ): void { $request ??= service('request'); @@ -560,7 +590,7 @@ function function_usable(string $functionName): bool * 2. {namespace}/Helpers * 3. system/Helpers * - * @param array|string $filenames + * @param list|string $filenames * * @throws FileNotFoundException */ @@ -598,7 +628,7 @@ function helper($filenames): void if (str_contains($filename, '\\')) { $path = $loader->locateFile($filename, 'Helpers'); - if ($path !== '') { + if ($path === false) { throw FileNotFoundException::forFileNotFound($filename); } @@ -729,6 +759,8 @@ function is_windows(?bool $mock = null): bool * A convenience method to translate a string or array of them and format * the result with the intl extension's MessageFormatter. * + * @param array $args + * * @return list|string */ function lang(string $line, array $args = [], ?string $locale = null) @@ -739,13 +771,13 @@ function lang(string $line, array $args = [], ?string $locale = null) // Get active locale $activeLocale = $language->getLocale(); - if ($locale && $locale !== $activeLocale) { + if ((string) $locale !== '' && $locale !== $activeLocale) { $language->setLocale($locale); } $lines = $language->getLine($line, $args); - if ($locale && $locale !== $activeLocale) { + if ((string) $locale !== '' && $locale !== $activeLocale) { // Reset to active locale $language->setLocale($activeLocale); } @@ -794,8 +826,7 @@ function log_message(string $level, string $message, array $context = []): void * * @param class-string|string $name * - * @return ModelTemplate|null - * @phpstan-return ($name is class-string ? ModelTemplate : object|null) + * @return ($name is class-string ? ModelTemplate : object|null) */ function model(string $name, bool $getShared = true, ?ConnectionInterface &$conn = null) { @@ -808,9 +839,8 @@ function model(string $name, bool $getShared = true, ?ConnectionInterface &$conn * Provides access to "old input" that was set in the session * during a redirect()->withInput(). * - * @param string|null $default - * @param false|string $escape - * @phpstan-param false|'attr'|'css'|'html'|'js'|'raw'|'url' $escape + * @param string|null $default + * @param 'attr'|'css'|'html'|'js'|'raw'|'url'|false $escape * * @return array|string|null */ @@ -849,7 +879,7 @@ function redirect(?string $route = null): RedirectResponse { $response = service('redirectresponse'); - if ($route !== null) { + if ((string) $route !== '') { return $response->route($route); } @@ -963,8 +993,7 @@ function route_to(string $method, ...$params) * session()->set('foo', 'bar'); * $foo = session('bar'); * - * @return array|bool|float|int|object|Session|string|null - * @phpstan-return ($val is null ? Session : array|bool|float|int|object|string|null) + * @return ($val is null ? Session : mixed) */ function session(?string $val = null) { @@ -1065,7 +1094,7 @@ function slash_item(string $item): ?string 'Cannot convert "%s::$%s" of type "%s" to type "string".', App::class, $item, - gettype($configItem) + gettype($configItem), )); } @@ -1092,7 +1121,7 @@ function stringify_attributes($attributes, bool $js = false): string { $atts = ''; - if ($attributes === '' || $attributes === [] || $attributes === null) { + if (in_array($attributes, ['', [], null], true)) { return $atts; } @@ -1121,8 +1150,7 @@ function stringify_attributes($attributes, bool $js = false): string * @param non-empty-string|null $name * @param (callable(): mixed)|null $callable * - * @return mixed|Timer - * @phpstan-return ($name is null ? Timer : ($callable is (callable(): mixed) ? mixed : Timer)) + * @return ($name is null ? Timer : ($callable is (callable(): mixed) ? mixed : Timer)) */ function timer(?string $name = null, ?callable $callable = null) { @@ -1198,7 +1226,7 @@ function view_cell(string $library, $params = null, int $ttl = 0, ?string $cache /** * Get the class "basename" of the given object / class. * - * @param object|string $class + * @param class-string|object $class * * @return string * @@ -1216,9 +1244,9 @@ function class_basename($class) /** * Returns all traits used by a class, its parent classes and trait of their traits. * - * @param object|string $class + * @param class-string|object $class * - * @return array + * @return array * * @codeCoverageIgnore */ @@ -1242,9 +1270,9 @@ function class_uses_recursive($class) /** * Returns all traits used by a trait and its traits. * - * @param string $trait + * @param class-string $trait * - * @return array + * @return array * * @codeCoverageIgnore */ diff --git a/system/ComposerScripts.php b/system/ComposerScripts.php index 661247dab532..1794e7ffe9eb 100644 --- a/system/ComposerScripts.php +++ b/system/ComposerScripts.php @@ -67,7 +67,7 @@ final class ComposerScripts * This static method is called by Composer after every update event, * i.e., `composer install`, `composer update`, `composer remove`. */ - public static function postUpdate() + public static function postUpdate(): void { self::recursiveDelete(self::$path); @@ -102,7 +102,7 @@ private static function recursiveDelete(string $directory): void /** @var SplFileInfo $file */ foreach (new RecursiveIteratorIterator( new RecursiveDirectoryIterator(rtrim($directory, '\\/'), FilesystemIterator::SKIP_DOTS), - RecursiveIteratorIterator::CHILD_FIRST + RecursiveIteratorIterator::CHILD_FIRST, ) as $file) { $path = $file->getPathname(); @@ -146,7 +146,7 @@ private static function recursiveMirror(string $originDir, string $targetDir): v /** @var SplFileInfo $file */ foreach (new RecursiveIteratorIterator( new RecursiveDirectoryIterator($originDir, FilesystemIterator::SKIP_DOTS), - RecursiveIteratorIterator::SELF_FIRST + RecursiveIteratorIterator::SELF_FIRST, ) as $file) { $origin = $file->getPathname(); $target = $targetDir . substr($origin, $dirLen); diff --git a/system/Config/AutoloadConfig.php b/system/Config/AutoloadConfig.php index 0a99cdb0bb28..b6d7f72bdd54 100644 --- a/system/Config/AutoloadConfig.php +++ b/system/Config/AutoloadConfig.php @@ -14,6 +14,7 @@ namespace CodeIgniter\Config; use Laminas\Escaper\Escaper; +use Laminas\Escaper\EscaperInterface; use Laminas\Escaper\Exception\ExceptionInterface; use Laminas\Escaper\Exception\InvalidArgumentException as EscaperInvalidArgumentException; use Laminas\Escaper\Exception\RuntimeException; @@ -119,6 +120,7 @@ class AutoloadConfig ExceptionInterface::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/ExceptionInterface.php', EscaperInvalidArgumentException::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/InvalidArgumentException.php', RuntimeException::class => SYSTEMPATH . 'ThirdParty/Escaper/Exception/RuntimeException.php', + EscaperInterface::class => SYSTEMPATH . 'ThirdParty/Escaper/EscaperInterface.php', Escaper::class => SYSTEMPATH . 'ThirdParty/Escaper/Escaper.php', ]; diff --git a/system/Config/BaseConfig.php b/system/Config/BaseConfig.php index 8a82cbf7ce64..ce6594d45d36 100644 --- a/system/Config/BaseConfig.php +++ b/system/Config/BaseConfig.php @@ -11,11 +11,13 @@ namespace CodeIgniter\Config; +use CodeIgniter\Autoloader\FileLocatorInterface; +use CodeIgniter\Exceptions\ConfigException; +use CodeIgniter\Exceptions\RuntimeException; use Config\Encryption; use Config\Modules; use ReflectionClass; use ReflectionException; -use RuntimeException; /** * Class BaseConfig @@ -45,12 +47,22 @@ class BaseConfig public static bool $override = true; /** - * Has module discovery happened yet? + * Has module discovery completed? * * @var bool */ protected static $didDiscovery = false; + /** + * Is module discovery running or not? + */ + protected static bool $discovering = false; + + /** + * The processing Registrar file for error message. + */ + protected static string $registrarFile = ''; + /** * The modules configuration. * @@ -230,10 +242,25 @@ protected function registerProperties() } if (! static::$didDiscovery) { + // Discovery must be completed before the first instantiation of any Config class. + if (static::$discovering) { + throw new ConfigException( + 'During Auto-Discovery of Registrars,' + . ' "' . static::class . '" executes Auto-Discovery again.' + . ' "' . clean_path(static::$registrarFile) . '" seems to have bad code.', + ); + } + + static::$discovering = true; + + /** @var FileLocatorInterface */ $locator = service('locator'); $registrarsFiles = $locator->search('Config/Registrar.php'); foreach ($registrarsFiles as $file) { + // Saves the file for error message. + static::$registrarFile = $file; + $className = $locator->findQualifiedNameFromPath($file); if ($className === false) { @@ -244,6 +271,7 @@ protected function registerProperties() } static::$didDiscovery = true; + static::$discovering = false; } $shortName = (new ReflectionClass($this))->getShortName(); diff --git a/system/Config/BaseService.php b/system/Config/BaseService.php index 687044be0713..0fb4c3c7c3ad 100644 --- a/system/Config/BaseService.php +++ b/system/Config/BaseService.php @@ -29,6 +29,7 @@ use CodeIgniter\Debug\Toolbar; use CodeIgniter\Email\Email; use CodeIgniter\Encryption\EncrypterInterface; +use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\Filters\Filters; use CodeIgniter\Format\Format; use CodeIgniter\Honeypot\Honeypot; @@ -79,7 +80,6 @@ use Config\Toolbar as ConfigToolbar; use Config\Validation as ConfigValidation; use Config\View as ConfigView; -use InvalidArgumentException; /** * Services Configuration file. @@ -389,6 +389,15 @@ public static function injectMock(string $name, $mock) static::$mocks[strtolower($name)] = $mock; } + /** + * Resets the service cache. + */ + public static function resetServicesCache(): void + { + self::$serviceNames = []; + static::$discovered = false; + } + protected static function buildServicesCache(): void { if (! static::$discovered) { diff --git a/system/Config/DotEnv.php b/system/Config/DotEnv.php index db7152fd09d5..6778c44e0d8d 100644 --- a/system/Config/DotEnv.php +++ b/system/Config/DotEnv.php @@ -13,7 +13,7 @@ namespace CodeIgniter\Config; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; /** * Environment-specific configuration @@ -94,7 +94,7 @@ public function parse(): ?array */ protected function setVariable(string $name, string $value = '') { - if (! getenv($name, true)) { + if (getenv($name, true) === false) { putenv("{$name}={$value}"); } @@ -164,7 +164,7 @@ protected function sanitizeValue(string $value): string %1$s # and the closing quote .*$ # and discard any string after the closing quote /mx', - $quote + $quote, ); $value = preg_replace($regexPattern, '$1', $value); @@ -206,7 +206,7 @@ function ($matchedPatterns) { return $nestedVariable; }, - $value + $value, ); } diff --git a/system/Config/Factories.php b/system/Config/Factories.php index b845d5825f43..ab5343d15fb8 100644 --- a/system/Config/Factories.php +++ b/system/Config/Factories.php @@ -13,9 +13,10 @@ namespace CodeIgniter\Config; +use CodeIgniter\Autoloader\FileLocatorInterface; use CodeIgniter\Database\ConnectionInterface; +use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\Model; -use InvalidArgumentException; /** * Factories for creating instances. @@ -106,7 +107,7 @@ public static function define(string $component, string $alias, string $classnam } throw new InvalidArgumentException( - 'Already defined in Factories: ' . $component . ' ' . $alias . ' -> ' . self::$aliases[$component][$alias] + 'Already defined in Factories: ' . $component . ' ' . $alias . ' -> ' . self::$aliases[$component][$alias], ); } @@ -299,6 +300,7 @@ class_exists($alias, false) } // Have to do this the hard way... + /** @var FileLocatorInterface */ $locator = service('locator'); // Check if the class alias was namespaced @@ -448,7 +450,7 @@ public static function reset(?string $component = null) self::$options[$component], self::$aliases[$component], self::$instances[$component], - self::$updated[$component] + self::$updated[$component], ); return; @@ -511,6 +513,12 @@ public static function getBasename(string $alias): string /** * Gets component data for caching. * + * @return array{ + * options: array, + * aliases: array, + * instances: array, + * } + * * @internal For caching only */ public static function getComponentInstances(string $component): array diff --git a/system/Config/Filters.php b/system/Config/Filters.php index 562eae8a26ef..80662ede4bb3 100644 --- a/system/Config/Filters.php +++ b/system/Config/Filters.php @@ -78,7 +78,10 @@ class Filters extends BaseConfig * List of filter aliases that are always * applied before and after every request. * - * @var array>>|array> + * @var array{ + * before: array|string}>|list, + * after: array|string}>|list + * } */ public array $globals = [ 'before' => [ @@ -113,6 +116,8 @@ class Filters extends BaseConfig * * Example: * 'isLoggedIn' => ['before' => ['account/*', 'profiles/*']] + * + * @var array>> */ public array $filters = []; } diff --git a/system/Config/Services.php b/system/Config/Services.php index 61026de4292c..c2a73f839f28 100644 --- a/system/Config/Services.php +++ b/system/Config/Services.php @@ -213,7 +213,7 @@ public static function curlrequest(array $options = [], ?ResponseInterface $resp $config, new URI($options['baseURI'] ?? null), $response, - $options + $options, ); } @@ -267,7 +267,7 @@ public static function encrypter(?EncryptionConfig $config = null, $getShared = */ public static function exceptions( ?ExceptionsConfig $config = null, - bool $getShared = true + bool $getShared = true, ) { if ($getShared) { return static::getSharedInstance('exceptions', $config); @@ -345,7 +345,7 @@ public static function image(?string $handler = null, ?Images $config = null, bo $config ??= config(Images::class); assert($config instanceof Images); - $handler = $handler ?: $config->defaultHandler; + $handler = in_array($handler, [null, '', '0'], true) ? $config->defaultHandler : $handler; $class = $config->handlers[$handler]; return new $class($config); @@ -385,7 +385,7 @@ public static function language(?string $locale = null, bool $getShared = true) } // Use '?:' for empty string check - $locale = $locale ?: $requestLocale; + $locale = in_array($locale, [null, '', '0'], true) ? $requestLocale : $locale; return new Language($locale); } @@ -484,7 +484,7 @@ public static function parser(?string $viewPath = null, ?ViewConfig $config = nu return static::getSharedInstance('parser', $viewPath, $config); } - $viewPath = $viewPath ?: (new Paths())->viewDirectory; + $viewPath = in_array($viewPath, [null, '', '0'], true) ? (new Paths())->viewDirectory : $viewPath; $config ??= config(ViewConfig::class); return new Parser($config, $viewPath, AppServices::get('locator'), CI_DEBUG, AppServices::get('logger')); @@ -503,7 +503,7 @@ public static function renderer(?string $viewPath = null, ?ViewConfig $config = return static::getSharedInstance('renderer', $viewPath, $config); } - $viewPath = $viewPath ?: (new Paths())->viewDirectory; + $viewPath = in_array($viewPath, [null, '', '0'], true) ? (new Paths())->viewDirectory : $viewPath; $config ??= config(ViewConfig::class); return new View($config, $viewPath, AppServices::get('locator'), CI_DEBUG, AppServices::get('logger')); @@ -569,7 +569,7 @@ public static function incomingrequest(?App $config = null, bool $getShared = tr $config, AppServices::get('uri'), 'php://input', - new UserAgent() + new UserAgent(), ); } @@ -619,7 +619,7 @@ public static function routes(bool $getShared = true) return static::getSharedInstance('routes'); } - return new RouteCollection(AppServices::get('locator'), config(Modules::class), config(Routing::class)); + return new RouteCollection(AppServices::get('locator'), new Modules(), config(Routing::class)); } /** @@ -683,13 +683,18 @@ public static function session(?SessionConfig $config = null, bool $getShared = $driverName = MySQLiHandler::class; } elseif ($driverPlatform === 'Postgre') { $driverName = PostgreHandler::class; + } else { + throw new InvalidArgumentException(sprintf( + 'Invalid session database handler "%s" provided. Only "MySQLi" and "Postgre" are supported.', + $driverPlatform, + )); } } if (! class_exists($driverName) || ! is_a($driverName, SessionBaseHandler::class, true)) { throw new InvalidArgumentException(sprintf( 'Invalid session handler "%s" provided.', - $driverName + $driverName, )); } @@ -721,7 +726,7 @@ public static function session(?SessionConfig $config = null, bool $getShared = public static function siteurifactory( ?App $config = null, ?Superglobals $superglobals = null, - bool $getShared = true + bool $getShared = true, ) { if ($getShared) { return static::getSharedInstance('siteurifactory', $config, $superglobals); @@ -741,7 +746,7 @@ public static function siteurifactory( public static function superglobals( ?array $server = null, ?array $get = null, - bool $getShared = true + bool $getShared = true, ) { if ($getShared) { return static::getSharedInstance('superglobals', $server, $get); diff --git a/system/Controller.php b/system/Controller.php index fc0c41bf18fa..af74f3a3af10 100644 --- a/system/Controller.php +++ b/system/Controller.php @@ -15,6 +15,7 @@ use CodeIgniter\HTTP\CLIRequest; use CodeIgniter\HTTP\Exceptions\HTTPException; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; @@ -24,8 +25,6 @@ use Psr\Log\LoggerInterface; /** - * Class Controller - * * @see \CodeIgniter\ControllerTest */ class Controller @@ -77,7 +76,7 @@ class Controller * * @return void * - * @throws HTTPException + * @throws HTTPException|RedirectException */ public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger) { @@ -105,7 +104,7 @@ public function initController(RequestInterface $request, ResponseInterface $res * * @return void * - * @throws HTTPException + * @throws HTTPException|RedirectException */ protected function forceHTTPS(int $duration = 31_536_000) { diff --git a/system/Cookie/CloneableCookieInterface.php b/system/Cookie/CloneableCookieInterface.php index 0b7d6fdf5015..3055129a0b4b 100644 --- a/system/Cookie/CloneableCookieInterface.php +++ b/system/Cookie/CloneableCookieInterface.php @@ -58,15 +58,6 @@ public function withExpires($expires); */ public function withExpired(); - /** - * Creates a new Cookie that will virtually never expire from the browser. - * - * @return static - * - * @deprecated See https://github.com/codeigniter4/CodeIgniter4/pull/6413 - */ - public function withNeverExpiring(); - /** * Creates a new Cookie with a new path on the server the cookie is available. * diff --git a/system/Cookie/Cookie.php b/system/Cookie/Cookie.php index 01b10db19b65..e3d2488e6a10 100644 --- a/system/Cookie/Cookie.php +++ b/system/Cookie/Cookie.php @@ -15,11 +15,11 @@ use ArrayAccess; use CodeIgniter\Cookie\Exceptions\CookieException; +use CodeIgniter\Exceptions\InvalidArgumentException; +use CodeIgniter\Exceptions\LogicException; use CodeIgniter\I18n\Time; use Config\Cookie as CookieConfig; use DateTimeInterface; -use InvalidArgumentException; -use LogicException; use ReturnTypeWillChange; /** @@ -99,7 +99,16 @@ class Cookie implements ArrayAccess, CloneableCookieInterface * Default attributes for a Cookie object. The keys here are the * lowercase attribute names. Do not camelCase! * - * @var array + * @var array{ + * prefix: string, + * expires: int, + * path: string, + * domain: string, + * secure: bool, + * httponly: bool, + * samesite: string, + * raw: bool, + * } */ private static array $defaults = [ 'prefix' => '', @@ -127,9 +136,27 @@ class Cookie implements ArrayAccess, CloneableCookieInterface * * This method is called from Response::__construct(). * - * @param array|CookieConfig $config + * @param array{ + * prefix?: string, + * expires?: int, + * path?: string, + * domain?: string, + * secure?: bool, + * httponly?: bool, + * samesite?: string, + * raw?: bool, + * }|CookieConfig $config * - * @return array The old defaults array. Useful for resetting. + * @return array{ + * prefix: string, + * expires: int, + * path: string, + * domain: string, + * secure: bool, + * httponly: bool, + * samesite: string, + * raw: bool, + * } The old defaults array. Useful for resetting. */ public static function setDefaults($config = []) { @@ -198,9 +225,19 @@ public static function fromHeaderString(string $cookie, bool $raw = false) /** * Construct a new Cookie instance. * - * @param string $name The cookie's name - * @param string $value The cookie's value - * @param array $options The cookie's options + * @param string $name The cookie's name + * @param string $value The cookie's value + * @param array{ + * prefix?: string, + * max-age?: int|numeric-string, + * expires?: DateTimeInterface|int|string, + * path?: string, + * domain?: string, + * secure?: bool, + * httponly?: bool, + * samesite?: string, + * raw?: bool, + * } $options The cookie's options * * @throws CookieException */ @@ -465,24 +502,12 @@ public function withExpired() return $cookie; } - /** - * @deprecated See https://github.com/codeigniter4/CodeIgniter4/pull/6413 - */ - public function withNeverExpiring() - { - $cookie = clone $this; - - $cookie->expires = Time::now()->getTimestamp() + 5 * YEAR; - - return $cookie; - } - /** * {@inheritDoc} */ public function withPath(?string $path) { - $path = $path ?: self::$defaults['path']; + $path = in_array($path, [null, '', '0'], true) ? self::$defaults['path'] : $path; $this->validatePrefix($this->prefix, $this->secure, $path, $this->domain); $cookie = clone $this; diff --git a/system/Cookie/CookieInterface.php b/system/Cookie/CookieInterface.php index c848fa8884ec..b4a7ea3d7320 100644 --- a/system/Cookie/CookieInterface.php +++ b/system/Cookie/CookieInterface.php @@ -145,7 +145,14 @@ public function isRaw(): bool; * Gets the options that are passable to the `setcookie` variant * available on PHP 7.3+ * - * @return array + * @return array{ + * expires: int, + * path: string, + * domain: string, + * secure: bool, + * httponly: bool, + * samesite: string, + * } */ public function getOptions(): array; @@ -164,7 +171,18 @@ public function __toString(); /** * Returns the array representation of the Cookie object. * - * @return array + * @return array{ + * name: string, + * value: string, + * prefix: string, + * raw: bool, + * expires: int, + * path: string, + * domain: string, + * secure: bool, + * httponly: bool, + * samesite: string, + * } */ public function toArray(): array; } diff --git a/system/Cookie/CookieStore.php b/system/Cookie/CookieStore.php index 05ebf9925ee6..6d5caa2aa5e0 100644 --- a/system/Cookie/CookieStore.php +++ b/system/Cookie/CookieStore.php @@ -159,28 +159,6 @@ public function remove(string $name, string $prefix = '') return $store; } - /** - * Dispatches all cookies in store. - * - * @deprecated Response should dispatch cookies. - */ - public function dispatch(): void - { - foreach ($this->cookies as $cookie) { - $name = $cookie->getPrefixedName(); - $value = $cookie->getValue(); - $options = $cookie->getOptions(); - - if ($cookie->isRaw()) { - $this->setRawCookie($name, $value, $options); - } else { - $this->setCookie($name, $value, $options); - } - } - - $this->clear(); - } - /** * Returns all cookie instances in store. * @@ -232,28 +210,4 @@ protected function validateCookies(array $cookies): void } } } - - /** - * Extracted call to `setrawcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - * - * @deprecated - */ - protected function setRawCookie(string $name, string $value, array $options): void - { - setrawcookie($name, $value, $options); - } - - /** - * Extracted call to `setcookie()` in order to run unit tests on it. - * - * @codeCoverageIgnore - * - * @deprecated - */ - protected function setCookie(string $name, string $value, array $options): void - { - setcookie($name, $value, $options); - } } diff --git a/system/DataCaster/Cast/ArrayCast.php b/system/DataCaster/Cast/ArrayCast.php index 4bb0f4c74093..1deddea6fc8e 100644 --- a/system/DataCaster/Cast/ArrayCast.php +++ b/system/DataCaster/Cast/ArrayCast.php @@ -24,7 +24,7 @@ class ArrayCast extends BaseCast implements CastInterface public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): array { if (! is_string($value)) { self::invalidTypeValueError($value); @@ -40,7 +40,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): string { return serialize($value); } diff --git a/system/DataCaster/Cast/BaseCast.php b/system/DataCaster/Cast/BaseCast.php index c3df0efee103..06fb0eb4fa69 100644 --- a/system/DataCaster/Cast/BaseCast.php +++ b/system/DataCaster/Cast/BaseCast.php @@ -13,14 +13,14 @@ namespace CodeIgniter\DataCaster\Cast; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; abstract class BaseCast implements CastInterface { public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): mixed { return $value; } @@ -28,7 +28,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): mixed { return $value; } diff --git a/system/DataCaster/Cast/BooleanCast.php b/system/DataCaster/Cast/BooleanCast.php index e4a3fde09345..6554081e155d 100644 --- a/system/DataCaster/Cast/BooleanCast.php +++ b/system/DataCaster/Cast/BooleanCast.php @@ -24,7 +24,7 @@ class BooleanCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): bool { // For PostgreSQL if ($value === 't') { diff --git a/system/DataCaster/Cast/CSVCast.php b/system/DataCaster/Cast/CSVCast.php index 42dd3709a1db..d77c64c87b57 100644 --- a/system/DataCaster/Cast/CSVCast.php +++ b/system/DataCaster/Cast/CSVCast.php @@ -24,7 +24,7 @@ class CSVCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): array { if (! is_string($value)) { self::invalidTypeValueError($value); @@ -36,7 +36,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): string { if (! is_array($value)) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/Cast/CastInterface.php b/system/DataCaster/Cast/CastInterface.php index ff93dc2860bc..f90f2b227e1d 100644 --- a/system/DataCaster/Cast/CastInterface.php +++ b/system/DataCaster/Cast/CastInterface.php @@ -27,7 +27,7 @@ interface CastInterface public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): mixed; /** @@ -42,6 +42,6 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): mixed; } diff --git a/system/DataCaster/Cast/DatetimeCast.php b/system/DataCaster/Cast/DatetimeCast.php index 83e66d02217c..b5f346c9c419 100644 --- a/system/DataCaster/Cast/DatetimeCast.php +++ b/system/DataCaster/Cast/DatetimeCast.php @@ -14,8 +14,8 @@ namespace CodeIgniter\DataCaster\Cast; use CodeIgniter\Database\BaseConnection; +use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\I18n\Time; -use InvalidArgumentException; /** * Class DatetimeCast @@ -28,7 +28,7 @@ class DatetimeCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): Time { if (! is_string($value)) { self::invalidTypeValueError($value); @@ -43,12 +43,7 @@ public static function get( /** * @see https://www.php.net/manual/en/datetimeimmutable.createfromformat.php#datetimeimmutable.createfromformat.parameters */ - $format = match ($params[0] ?? '') { - '' => $helper->dateFormat['datetime'], - 'ms' => $helper->dateFormat['datetime-ms'], - 'us' => $helper->dateFormat['datetime-us'], - default => throw new InvalidArgumentException('Invalid parameter: ' . $params[0]), - }; + $format = self::getDateTimeFormat($params, $helper); return Time::createFromFormat($format, $value); } @@ -56,12 +51,35 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): string { if (! $value instanceof Time) { self::invalidTypeValueError($value); } - return (string) $value; + if (! $helper instanceof BaseConnection) { + $message = 'The parameter $helper must be BaseConnection.'; + + throw new InvalidArgumentException($message); + } + + $format = self::getDateTimeFormat($params, $helper); + + return $value->format($format); + } + + /** + * Gets DateTime format from the DB connection. + * + * @param list $params Additional param + */ + protected static function getDateTimeFormat(array $params, BaseConnection $db): string + { + return match ($params[0] ?? '') { + '' => $db->dateFormat['datetime'], + 'ms' => $db->dateFormat['datetime-ms'], + 'us' => $db->dateFormat['datetime-us'], + default => throw new InvalidArgumentException('Invalid parameter: ' . $params[0]), + }; } } diff --git a/system/DataCaster/Cast/FloatCast.php b/system/DataCaster/Cast/FloatCast.php index 7ced2e2653a7..d2173826265a 100644 --- a/system/DataCaster/Cast/FloatCast.php +++ b/system/DataCaster/Cast/FloatCast.php @@ -24,7 +24,7 @@ class FloatCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): float { if (! is_float($value) && ! is_string($value)) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/Cast/IntBoolCast.php b/system/DataCaster/Cast/IntBoolCast.php index 56977c842f0e..5aa1f2b2eb93 100644 --- a/system/DataCaster/Cast/IntBoolCast.php +++ b/system/DataCaster/Cast/IntBoolCast.php @@ -24,7 +24,7 @@ final class IntBoolCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): bool { if (! is_int($value) && ! is_string($value)) { self::invalidTypeValueError($value); @@ -36,7 +36,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): int { if (! is_bool($value)) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/Cast/IntegerCast.php b/system/DataCaster/Cast/IntegerCast.php index e16683b1fb8f..f65baf83150f 100644 --- a/system/DataCaster/Cast/IntegerCast.php +++ b/system/DataCaster/Cast/IntegerCast.php @@ -24,7 +24,7 @@ class IntegerCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): int { if (! is_string($value) && ! is_int($value)) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/Cast/JsonCast.php b/system/DataCaster/Cast/JsonCast.php index 316070aaedee..5ca10b385ba6 100644 --- a/system/DataCaster/Cast/JsonCast.php +++ b/system/DataCaster/Cast/JsonCast.php @@ -28,7 +28,7 @@ class JsonCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): array|stdClass { if (! is_string($value)) { self::invalidTypeValueError($value); @@ -50,7 +50,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): string { try { $output = json_encode($value, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR); diff --git a/system/DataCaster/Cast/TimestampCast.php b/system/DataCaster/Cast/TimestampCast.php index 52a4d88f9e46..aa94266001ef 100644 --- a/system/DataCaster/Cast/TimestampCast.php +++ b/system/DataCaster/Cast/TimestampCast.php @@ -26,19 +26,19 @@ class TimestampCast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): Time { if (! is_int($value) && ! is_string($value)) { self::invalidTypeValueError($value); } - return Time::createFromTimestamp((int) $value); + return Time::createFromTimestamp((int) $value, date_default_timezone_get()); } public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): int { if (! $value instanceof Time) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/Cast/URICast.php b/system/DataCaster/Cast/URICast.php index 63f4d2271a78..f9e2f561a2b2 100644 --- a/system/DataCaster/Cast/URICast.php +++ b/system/DataCaster/Cast/URICast.php @@ -26,7 +26,7 @@ class URICast extends BaseCast public static function get( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): URI { if (! is_string($value)) { self::invalidTypeValueError($value); @@ -38,7 +38,7 @@ public static function get( public static function set( mixed $value, array $params = [], - ?object $helper = null + ?object $helper = null, ): string { if (! $value instanceof URI) { self::invalidTypeValueError($value); diff --git a/system/DataCaster/DataCaster.php b/system/DataCaster/DataCaster.php index 5a6786a03331..5ef4579619ba 100644 --- a/system/DataCaster/DataCaster.php +++ b/system/DataCaster/DataCaster.php @@ -26,8 +26,14 @@ use CodeIgniter\DataCaster\Cast\URICast; use CodeIgniter\Entity\Cast\CastInterface as EntityCastInterface; use CodeIgniter\Entity\Exceptions\CastException; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; +/** + * @phpstan-type cast_handlers array> + * + * @see CodeIgniter\DataCaster\DataCasterTest + * @see CodeIgniter\Entity\EntityTest + */ final class DataCaster { /** @@ -38,9 +44,9 @@ final class DataCaster private array $types = []; /** - * Convert handlers + * Convert handlers. * - * @var array [type => classname] + * @var cast_handlers [type => classname] */ private array $castHandlers = [ 'array' => ArrayCast::class, @@ -59,18 +65,18 @@ final class DataCaster ]; /** - * @param array|null $castHandlers Custom convert handlers - * @param array|null $types [field => type] - * @param object|null $helper Helper object. - * @param bool $strict Strict mode? Set to false for casts for Entity. + * @param cast_handlers|null $castHandlers Custom convert handlers + * @param array|null $types [field => type] + * @param object|null $helper Helper object. + * @param bool $strict Strict mode? Set to `false` for casts for Entity. */ public function __construct( ?array $castHandlers = null, ?array $types = null, private readonly ?object $helper = null, - private readonly bool $strict = true + private readonly bool $strict = true, ) { - $this->castHandlers = array_merge($this->castHandlers, $castHandlers); + $this->castHandlers = array_merge($this->castHandlers, $castHandlers ?? []); if ($types !== null) { $this->setTypes($types); @@ -83,7 +89,7 @@ public function __construct( && ! is_subclass_of($handler, EntityCastInterface::class) ) { throw new InvalidArgumentException( - 'Invalid class type. It must implement CastInterface. class: ' . $handler + 'Invalid class type. It must implement CastInterface. class: ' . $handler, ); } } @@ -113,13 +119,16 @@ public function setTypes(array $types): static * Add ? at the beginning of the type (i.e. ?string) to get `null` * instead of casting $value when $value is null. * - * @param mixed $value The value to convert - * @param string $field The field name - * @param string $method Allowed to "get" and "set" - * @phpstan-param 'get'|'set' $method + * @param mixed $value The value to convert + * @param string $field The field name + * @param string $method Allowed to "get" and "set" */ public function castAs(mixed $value, string $field, string $method = 'get'): mixed { + if ($method !== 'get' && $method !== 'set') { + throw CastException::forInvalidMethod($method); + } + // If the type is not defined, return as it is. if (! isset($this->types[$field])) { return $value; @@ -169,7 +178,7 @@ public function castAs(mixed $value, string $field, string $method = 'get'): mix if (! isset($handlers[$type])) { throw new InvalidArgumentException( - 'No such handler for "' . $field . '". Invalid type: ' . $type + 'No such handler for "' . $field . '". Invalid type: ' . $type, ); } diff --git a/system/DataConverter/DataConverter.php b/system/DataConverter/DataConverter.php index 43b42a08bbdf..fa8353e83abd 100644 --- a/system/DataConverter/DataConverter.php +++ b/system/DataConverter/DataConverter.php @@ -20,9 +20,9 @@ /** * PHP data <==> DataSource data converter * - * @see \CodeIgniter\DataConverter\DataConverterTest - * * @template TEntity of object + * + * @see \CodeIgniter\DataConverter\DataConverterTest */ final class DataConverter { @@ -52,14 +52,14 @@ public function __construct( * Static reconstruct method name or closure to reconstruct an object. * Used by reconstruct(). * - * @phpstan-var (Closure(array): TEntity)|string|null + * @var (Closure(array): TEntity)|string|null */ private readonly Closure|string|null $reconstructor = 'reconstruct', /** * Extract method name or closure to extract data from an object. * Used by extract(). * - * @phpstan-var (Closure(TEntity, bool, bool): array)|string|null + * @var (Closure(TEntity, bool, bool): array)|string|null */ private readonly Closure|string|null $extractor = null, ) { @@ -105,11 +105,10 @@ public function toDataSource(array $phpData): array /** * Takes database data array and creates a specified type object. * - * @param class-string $classname - * @phpstan-param class-string $classname - * @param array $row Raw data from database + * @param class-string $classname + * @param array $row Raw data from database * - * @phpstan-return TEntity + * @return TEntity * * @internal */ diff --git a/system/Database/BaseBuilder.php b/system/Database/BaseBuilder.php index 892dd903b690..fd33bf40a566 100644 --- a/system/Database/BaseBuilder.php +++ b/system/Database/BaseBuilder.php @@ -16,9 +16,9 @@ use Closure; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Database\Exceptions\DataException; +use CodeIgniter\Exceptions\InvalidArgumentException; use CodeIgniter\Traits\ConditionalTrait; use Config\Feature; -use InvalidArgumentException; /** * Class BaseBuilder @@ -41,7 +41,7 @@ class BaseBuilder /** * QB SELECT data * - * @var array + * @var list */ protected $QBSelect = []; @@ -256,7 +256,7 @@ class BaseBuilder * Specifies which sql statements * support the ignore option. * - * @var array + * @var array */ protected $supportedIgnoreStatements = []; @@ -298,7 +298,7 @@ class BaseBuilder /** * Constructor * - * @param array|string $tableName tablename or tablenames with or without aliases + * @param array|string|TableName $tableName tablename or tablenames with or without aliases * * Examples of $tableName: `mytable`, `jobs j`, `jobs j, users u`, `['jobs j','users u']` * @@ -315,15 +315,20 @@ public function __construct($tableName, ConnectionInterface $db, ?array $options */ $this->db = $db; + if ($tableName instanceof TableName) { + $this->tableName = $tableName->getTableName(); + $this->QBFrom[] = $this->db->escapeIdentifier($tableName); + $this->db->addTableAlias($tableName->getAlias()); + } // If it contains `,`, it has multiple tables - if (is_string($tableName) && ! str_contains($tableName, ',')) { + elseif (is_string($tableName) && ! str_contains($tableName, ',')) { $this->tableName = $tableName; // @TODO remove alias if exists + $this->from($tableName); } else { $this->tableName = ''; + $this->from($tableName); } - $this->from($tableName); - if ($options !== null && $options !== []) { foreach ($options as $key => $value) { if (property_exists($this, $key)) { @@ -663,7 +668,7 @@ public function join(string $table, $cond, string $type = '', ?bool $escape = nu } else { // Split multiple conditions // @TODO This does not parse `BETWEEN a AND b` correctly. - if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE)) { + if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE) >= 1) { $conditions = []; $joints = $joints[0]; array_unshift($joints, ['', 0]); @@ -807,7 +812,7 @@ protected function whereHaving(string $qbKey, $key, $value = null, string $type '/\s*(!?=|<>|IS(?:\s+NOT)?)\s*$/i', $k, $match, - PREG_OFFSET_CAPTURE + PREG_OFFSET_CAPTURE, ) ) { $k = substr($k, 0, $match[0][1]); @@ -836,7 +841,7 @@ protected function whereHaving(string $qbKey, $key, $value = null, string $type * Generates a WHERE field IN('item', 'item') SQL query, * joined with 'AND' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -849,7 +854,7 @@ public function whereIn(?string $key = null, $values = null, ?bool $escape = nul * Generates a WHERE field IN('item', 'item') SQL query, * joined with 'OR' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -862,7 +867,7 @@ public function orWhereIn(?string $key = null, $values = null, ?bool $escape = n * Generates a WHERE field NOT IN('item', 'item') SQL query, * joined with 'AND' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -875,7 +880,7 @@ public function whereNotIn(?string $key = null, $values = null, ?bool $escape = * Generates a WHERE field NOT IN('item', 'item') SQL query, * joined with 'OR' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -888,7 +893,7 @@ public function orWhereNotIn(?string $key = null, $values = null, ?bool $escape * Generates a HAVING field IN('item', 'item') SQL query, * joined with 'AND' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -901,7 +906,7 @@ public function havingIn(?string $key = null, $values = null, ?bool $escape = nu * Generates a HAVING field IN('item', 'item') SQL query, * joined with 'OR' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -914,7 +919,7 @@ public function orHavingIn(?string $key = null, $values = null, ?bool $escape = * Generates a HAVING field NOT IN('item', 'item') SQL query, * joined with 'AND' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder):BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -927,7 +932,7 @@ public function havingNotIn(?string $key = null, $values = null, ?bool $escape = * Generates a HAVING field NOT IN('item', 'item') SQL query, * joined with 'OR' if appropriate. * - * @param array|BaseBuilder|Closure|string $values The values searched on, or anonymous function with subquery + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this */ @@ -942,8 +947,8 @@ public function orHavingNotIn(?string $key = null, $values = null, ?bool $escape * @used-by whereNotIn() * @used-by orWhereNotIn() * - * @param non-empty-string|null $key - * @param array|BaseBuilder|Closure|null $values The values searched on, or anonymous function with subquery + * @param non-empty-string|null $key + * @param array|BaseBuilder|(Closure(BaseBuilder): BaseBuilder)|null $values The values searched on, or anonymous function with subquery * * @return $this * @@ -1147,7 +1152,7 @@ protected function _like($field, string $match = '', string $type = 'AND ', stri return $this; } - $keyValue = ! is_array($field) ? [$field => $match] : $field; + $keyValue = is_array($field) ? $field : [$field => $match]; foreach ($keyValue as $k => $v) { if ($insensitiveSearch) { @@ -1197,7 +1202,7 @@ protected function _like_statement(?string $prefix, string $column, ?string $not /** * Add UNION statement * - * @param BaseBuilder|Closure $union + * @param BaseBuilder|Closure(BaseBuilder): BaseBuilder $union * * @return $this */ @@ -1209,7 +1214,7 @@ public function union($union) /** * Add UNION ALL statement * - * @param BaseBuilder|Closure $union + * @param BaseBuilder|Closure(BaseBuilder): BaseBuilder $union * * @return $this */ @@ -1222,7 +1227,7 @@ public function unionAll($union) * @used-by union() * @used-by unionAll() * - * @param BaseBuilder|Closure $union + * @param BaseBuilder|Closure(BaseBuilder): BaseBuilder $union * * @return $this */ @@ -1736,7 +1741,7 @@ public function countAllResults(bool $reset = true) // Restore the LIMIT setting $this->QBLimit = $limit; - $row = ! $result instanceof ResultInterface ? null : $result->getRow(); + $row = $result instanceof ResultInterface ? $result->getRow() : null; if (empty($row)) { return 0; @@ -2018,12 +2023,12 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $keys) . ")\n{:_table_:}ON DUPLICATE KEY UPDATE\n" . implode( ",\n", array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ? ' = ' . $value : ' = VALUES(' . $value . ')'), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $this->QBOptions['sql'] = $sql; @@ -2108,7 +2113,7 @@ public function onConstraint($set) if (is_string($set)) { $set = explode(',', $set); - $set = array_map(static fn ($key) => trim($key), $set); + $set = array_map(trim(...), $set); } if ($set instanceof RawSql) { @@ -2152,7 +2157,7 @@ public function setQueryAsData($query, ?string $alias = null, $columns = null): if (is_string($query)) { if ($columns !== null && is_string($columns)) { $columns = explode(',', $columns); - $columns = array_map(static fn ($key) => trim($key), $columns); + $columns = array_map(trim(...), $columns); } $columns = (array) $columns; @@ -2190,7 +2195,7 @@ protected function fieldsFromQuery(string $sql): array */ protected function formatValues(array $values): array { - return array_map(static fn ($index) => '(' . implode(',', $index) . ')', $values); + return array_map(static fn ($index): string => '(' . implode(',', $index) . ')', $values); } /** @@ -2198,7 +2203,7 @@ protected function formatValues(array $values): array * * @param array|object|null $set a dataset * - * @return false|int|list Number of rows inserted or FALSE on failure, SQL array when testMode + * @return false|int|list Number of rows inserted or FALSE on no data to perform an insert operation, SQL array when testMode */ public function insertBatch($set = null, ?bool $escape = null, int $batchSize = 100) { @@ -2291,10 +2296,10 @@ public function getCompiledInsert(bool $reset = true) $this->removeAlias($this->QBFrom[0]), true, null, - false + false, ), array_keys($this->QBSet), - array_values($this->QBSet) + array_values($this->QBSet), ); if ($reset) { @@ -2328,10 +2333,10 @@ public function insert($set = null, ?bool $escape = null) $this->removeAlias($this->QBFrom[0]), true, $escape, - false + false, ), array_keys($this->QBSet), - array_values($this->QBSet) + array_values($this->QBSet), ); if (! $this->testMode) { @@ -2649,12 +2654,12 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? ' = ' . $value : ' = ' . $alias . '.' . $value), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ) . "\n"; $sql .= "FROM (\n{:_table_:}"; @@ -2678,8 +2683,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ); $this->QBOptions['sql'] = $sql; @@ -2691,13 +2696,13 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } @@ -2924,8 +2929,8 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ); // convert binds in where @@ -2946,13 +2951,13 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } @@ -3014,7 +3019,7 @@ protected function _delete(string $table): string * * @param array|string $table The table to inspect * - * @return string|void + * @return string|null */ protected function trackAliases($table) { @@ -3023,7 +3028,7 @@ protected function trackAliases($table) $this->trackAliases($t); } - return; + return null; } // Does the string contain a comma? If so, we need to separate @@ -3038,11 +3043,13 @@ protected function trackAliases($table) $table = preg_replace('/\s+AS\s+/i', ' ', $table); // Grab the alias - $table = trim(strrchr($table, ' ')); + $alias = trim(strrchr($table, ' ')); // Store the alias, if it doesn't already exist - $this->db->addTableAlias($table); + $this->db->addTableAlias($alias); } + + return null; } /** @@ -3058,7 +3065,7 @@ protected function compileSelect($selectOverride = false): string if ($selectOverride !== false) { $sql = $selectOverride; } else { - $sql = (! $this->QBDistinct) ? 'SELECT ' : 'SELECT DISTINCT '; + $sql = $this->QBDistinct ? 'SELECT DISTINCT ' : 'SELECT '; if (empty($this->QBSelect)) { $sql .= '*'; @@ -3160,21 +3167,22 @@ protected function compileWhereHaving(string $qbKey): string '/((?:^|\s+)AND\s+|(?:^|\s+)OR\s+)/i', $qbkey['condition'], -1, - PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY, ); foreach ($conditions as &$condition) { $op = $this->getOperator($condition); if ( $op === false - || ! preg_match( + || preg_match( '/^(\(?)(.*)(' . preg_quote($op, '/') . ')\s*(.*(? '(test <= foo)', /* the whole thing */ // 1 => '(', /* optional */ @@ -3184,7 +3192,7 @@ protected function compileWhereHaving(string $qbKey): string // 5 => ')' /* optional */ // ]; - if (isset($matches[4]) && $matches[4] !== '') { + if ($matches[4] !== '') { $protectIdentifiers = false; if (str_contains($matches[4], '.')) { $protectIdentifiers = true; @@ -3249,6 +3257,9 @@ protected function compileOrderBy(): string { if (is_array($this->QBOrderBy) && $this->QBOrderBy !== []) { foreach ($this->QBOrderBy as &$orderBy) { + if (is_string($orderBy)) { + continue; + } if ($orderBy['escape'] !== false && ! $this->isLiteral($orderBy['field'])) { $orderBy['field'] = $this->db->protectIdentifiers($orderBy['field']); } @@ -3256,11 +3267,7 @@ protected function compileOrderBy(): string $orderBy = $orderBy['field'] . $orderBy['direction']; } - return $this->QBOrderBy = "\nORDER BY " . implode(', ', $this->QBOrderBy); - } - - if (is_string($this->QBOrderBy)) { - return $this->QBOrderBy; + return "\nORDER BY " . implode(', ', $this->QBOrderBy); } return ''; @@ -3372,6 +3379,8 @@ public function resetQuery() * Resets the query builder values. Called by the get() function * * @param array $qbResetItems An array of fields to reset + * + * @return void */ protected function resetRun(array $qbResetItems) { @@ -3382,6 +3391,8 @@ protected function resetRun(array $qbResetItems) /** * Resets the query builder values. Called by the get() function + * + * @return void */ protected function resetSelect() { @@ -3399,7 +3410,7 @@ protected function resetSelect() 'QBUnion' => [], ]); - if (! empty($this->db)) { + if ($this->db instanceof BaseConnection) { $this->db->setAliasedTables([]); } @@ -3413,6 +3424,8 @@ protected function resetSelect() * Resets the query builder "write" values. * * Called by the insert() update() insertBatch() updateBatch() and delete() functions + * + * @return void */ protected function resetWrite() { @@ -3435,7 +3448,7 @@ protected function hasOperator(string $str): bool { return preg_match( '/(<|>|!|=|\sIS NULL|\sIS NOT NULL|\sEXISTS|\sBETWEEN|\sLIKE|\sIN\s*\(|\s)/i', - trim($str) + trim($str), ) === 1; } @@ -3469,8 +3482,8 @@ protected function getOperator(string $str, bool $list = false) return preg_match_all( '/' . implode('|', $this->pregOperators) . '/i', $str, - $match - ) ? ($list ? $match[0] : $match[0][0]) : false; + $match, + ) >= 1 ? ($list ? $match[0] : $match[0][0]) : false; } /** @@ -3500,8 +3513,8 @@ private function getOperatorFromWhereKey(string $whereKey) return preg_match_all( '/' . implode('|', $pregOperators) . '/i', $whereKey, - $match - ) ? $match[0] : false; + $match, + ) >= 1 ? $match[0] : false; } /** @@ -3558,9 +3571,9 @@ protected function isSubquery($value): bool } /** - * @param BaseBuilder|Closure $builder - * @param bool $wrapped Wrap the subquery in brackets - * @param string $alias Subquery alias + * @param BaseBuilder|Closure(BaseBuilder): BaseBuilder $builder + * @param bool $wrapped Wrap the subquery in brackets + * @param string $alias Subquery alias */ protected function buildSubquery($builder, bool $wrapped = false, string $alias = ''): string { diff --git a/system/Database/BaseConnection.php b/system/Database/BaseConnection.php index c60c2e72c680..f09175d59b46 100644 --- a/system/Database/BaseConnection.php +++ b/system/Database/BaseConnection.php @@ -206,16 +206,14 @@ abstract class BaseConnection implements ConnectionInterface /** * Connection ID * - * @var false|object|resource - * @phpstan-var false|TConnection + * @var false|TConnection */ public $connID = false; /** * Result ID * - * @var false|object|resource - * @phpstan-var false|TResult + * @var false|TResult */ public $resultID = false; @@ -340,7 +338,7 @@ abstract class BaseConnection implements ConnectionInterface /** * Array of table aliases. * - * @var array + * @var list */ protected $aliasedTables = []; @@ -406,7 +404,7 @@ public function initialize() /* If an established connection is available, then there's * no need to connect and select the database. * - * Depending on the database driver, conn_id can be either + * Depending on the database driver, connID can be either * boolean TRUE, a resource or an object. */ if ($this->connID) { @@ -424,7 +422,7 @@ public function initialize() $connectionErrors[] = sprintf( 'Main connection [%s]: %s', $this->DBDriver, - $e->getMessage() + $e->getMessage(), ); log_message('error', 'Error connecting to the database: ' . $e); } @@ -450,7 +448,7 @@ public function initialize() 'Failover #%d [%s]: %s', ++$index, $this->DBDriver, - $e->getMessage() + $e->getMessage(), ); log_message('error', 'Error connecting to the database: ' . $e); } @@ -467,7 +465,7 @@ public function initialize() throw new DatabaseException(sprintf( 'Unable to connect to the database.%s%s', PHP_EOL, - implode(PHP_EOL, $connectionErrors) + implode(PHP_EOL, $connectionErrors), )); } } @@ -498,8 +496,7 @@ abstract protected function _close(); /** * Create a persistent database connection. * - * @return false|object|resource - * @phpstan-return false|TConnection + * @return false|TConnection */ public function persistentConnect() { @@ -512,8 +509,7 @@ public function persistentConnect() * get that connection. If you pass either alias in and only a single * connection is present, it must return the sole connection. * - * @return false|object|resource - * @phpstan-return TConnection + * @return false|TConnection */ public function getConnection(?string $alias = null) { @@ -576,10 +572,14 @@ public function setAliasedTables(array $aliases) * * @return $this */ - public function addTableAlias(string $table) + public function addTableAlias(string $alias) { - if (! in_array($table, $this->aliasedTables, true)) { - $this->aliasedTables[] = $table; + if ($alias === '') { + return $this; + } + + if (! in_array($alias, $this->aliasedTables, true)) { + $this->aliasedTables[] = $alias; } return $this; @@ -588,8 +588,7 @@ public function addTableAlias(string $table) /** * Executes the query against the database. * - * @return false|object|resource - * @phpstan-return false|TResult + * @return false|TResult */ abstract protected function execute(string $sql); @@ -603,14 +602,13 @@ abstract protected function execute(string $sql); * * @param array|string|null $binds * - * @return BaseResult|bool|Query BaseResult when “read” type query, bool when “write” type query, Query when prepared query - * @phpstan-return BaseResult|bool|Query + * @return BaseResult|bool|Query * * @todo BC set $queryClass default as null in 4.1 */ public function query(string $sql, $binds = null, bool $setEscapeFlags = true, string $queryClass = '') { - $queryClass = $queryClass ?: $this->queryClass; + $queryClass = $queryClass !== '' && $queryClass !== '0' ? $queryClass : $this->queryClass; if (empty($this->connID)) { $this->initialize(); @@ -654,9 +652,7 @@ public function query(string $sql, $binds = null, bool $setEscapeFlags = true, s $query->setDuration($startTime, $startTime); // This will trigger a rollback if transactions are being used - if ($this->transDepth !== 0) { - $this->transStatus = false; - } + $this->handleTransStatus(); if ( $this->DBDebug @@ -688,7 +684,7 @@ public function query(string $sql, $binds = null, bool $setEscapeFlags = true, s throw new DatabaseException( $exception->getMessage(), $exception->getCode(), - $exception + $exception, ); } @@ -722,8 +718,7 @@ public function query(string $sql, $binds = null, bool $setEscapeFlags = true, s * is performed, nor are transactions handled. Simply takes a raw * query string and returns the database-specific result id. * - * @return false|object|resource - * @phpstan-return false|TResult + * @return false|TResult */ public function simpleQuery(string $sql) { @@ -846,7 +841,7 @@ public function transBegin(bool $testMode = false): bool } // Reset the transaction failure flag. - // If the $test_mode flag is set to TRUE transactions will be rolled back + // If the $testMode flag is set to TRUE transactions will be rolled back // even if the queries produce a successful result. $this->transFailure = $testMode; @@ -897,6 +892,28 @@ public function transRollback(): bool return false; } + /** + * Reset transaction status - to restart transactions after strict mode failure + */ + public function resetTransStatus(): static + { + $this->transStatus = true; + + return $this; + } + + /** + * Handle transaction status when a query fails + * + * @internal This method is for internal database component use only + */ + public function handleTransStatus(): void + { + if ($this->transDepth !== 0) { + $this->transStatus = false; + } + } + /** * Begin Transaction */ @@ -915,7 +932,7 @@ abstract protected function _transRollback(): bool; /** * Returns a non-shared new instance of the query builder for this connection. * - * @param array|string $tableName + * @param array|string|TableName $tableName * * @return BaseBuilder * @@ -959,6 +976,8 @@ public function newQuery(): BaseBuilder * ->get(); * }) * + * @param Closure(BaseConnection): mixed $func + * * @return BasePreparedQuery|null */ public function prepare(Closure $func, array $options = []) @@ -1044,13 +1063,12 @@ public function getConnectDuration(int $decimals = 6): string * insert the table prefix (if it exists) in the proper position, and escape only * the correct identifiers. * - * @param array|int|string $item - * @param bool $prefixSingle Prefix a table name with no segments? - * @param bool $protectIdentifiers Protect table or column names? - * @param bool $fieldExists Supplied $item contains a column name? + * @param array|int|string|TableName $item + * @param bool $prefixSingle Prefix a table name with no segments? + * @param bool $protectIdentifiers Protect table or column names? + * @param bool $fieldExists Supplied $item contains a column name? * - * @return array|string - * @phpstan-return ($item is array ? array : string) + * @return ($item is array ? array : string) */ public function protectIdentifiers($item, bool $prefixSingle = false, ?bool $protectIdentifiers = null, bool $fieldExists = true) { @@ -1068,6 +1086,11 @@ public function protectIdentifiers($item, bool $prefixSingle = false, ?bool $pro return $escapedArray; } + if ($item instanceof TableName) { + /** @psalm-suppress NoValue I don't know why ERROR. */ + return $this->escapeTableName($item); + } + // If you pass `['column1', 'column2']`, `$item` will be int because the array keys are int. $item = (string) $item; @@ -1210,19 +1233,38 @@ private function protectDotItem(string $item, string $alias, bool $protectIdenti * * This function escapes single identifier. * - * @param non-empty-string $item + * @param non-empty-string|TableName $item */ - public function escapeIdentifier(string $item): string + public function escapeIdentifier($item): string { + if ($item === '') { + return ''; + } + + if ($item instanceof TableName) { + return $this->escapeTableName($item); + } + return $this->escapeChar . str_replace( $this->escapeChar, $this->escapeChar . $this->escapeChar, - $item + $item, ) . $this->escapeChar; } + /** + * Returns escaped table name with alias. + */ + private function escapeTableName(TableName $tableName): string + { + $alias = $tableName->getAlias(); + + return $this->escapeIdentifier($tableName->getActualTableName()) + . (($alias !== '') ? ' ' . $this->escapeIdentifier($alias) : ''); + } + /** * Escape the SQL Identifiers * @@ -1230,8 +1272,7 @@ public function escapeIdentifier(string $item): string * * @param array|string $item * - * @return array|string - * @phpstan-return ($item is array ? array : string) + * @return ($item is array ? array : string) */ public function escapeIdentifiers($item) { @@ -1275,7 +1316,7 @@ public function escapeIdentifiers($item) return preg_replace( '/' . $this->pregEscapeChar[0] . '?([^' . $this->pregEscapeChar[1] . '\.]+)' . $this->pregEscapeChar[1] . '?\./i', $this->pregEscapeChar[2] . '$1' . $this->pregEscapeChar[3] . '.', - $item + $item, ); } } @@ -1284,7 +1325,7 @@ public function escapeIdentifiers($item) return preg_replace( '/' . $this->pregEscapeChar[0] . '?([^' . $this->pregEscapeChar[1] . '\.]+)' . $this->pregEscapeChar[1] . '?(\.)?/i', $this->pregEscapeChar[2] . '$1' . $this->pregEscapeChar[3] . '$2', - $item + $item, ); } @@ -1315,8 +1356,7 @@ abstract public function affectedRows(): int; * * @param array|bool|float|int|object|string|null $str * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) + * @return ($str is array ? array : float|int|string) */ public function escape($str) { @@ -1384,7 +1424,7 @@ public function escapeString($str, bool $like = false) $this->likeEscapeChar . '%', $this->likeEscapeChar . '_', ], - $str + $str, ); } @@ -1520,7 +1560,7 @@ public function tableExists(string $tableName, bool $cached = true): bool $key = array_search( strtolower($tableName), array_map(strtolower(...), $this->dataCache['table_names']), - true + true, ); // table doesn't exist but still in cache - lets reset cache, it can be rebuilt later @@ -1536,12 +1576,16 @@ public function tableExists(string $tableName, bool $cached = true): bool /** * Fetch Field Names * + * @param string|TableName $tableName + * * @return false|list * * @throws DatabaseException */ - public function getFieldNames(string $table) + public function getFieldNames($tableName) { + $table = ($tableName instanceof TableName) ? $tableName->getTableName() : $tableName; + // Is there a cached result? if (isset($this->dataCache['field_names'][$table])) { return $this->dataCache['field_names'][$table]; @@ -1551,7 +1595,7 @@ public function getFieldNames(string $table) $this->initialize(); } - if (false === ($sql = $this->_listColumns($table))) { + if (false === ($sql = $this->_listColumns($tableName))) { if ($this->DBDebug) { throw new DatabaseException('This feature is not available for the database you are using.'); } @@ -1743,8 +1787,7 @@ public function isWriteType($sql): bool * * Must return an array with keys 'code' and 'message': * - * @return array - * @phpstan-return array{code: int|string|null, message: string|null} + * @return array{code: int|string|null, message: string|null} */ abstract public function error(): array; @@ -1767,9 +1810,11 @@ abstract protected function _listTables(bool $constrainByPrefix = false, ?string /** * Generates a platform-specific query string so that the column names can be fetched. * + * @param string|TableName $table + * * @return false|string */ - abstract protected function _listColumns(string $table = ''); + abstract protected function _listColumns($table = ''); /** * Platform-specific field data information. diff --git a/system/Database/BasePreparedQuery.php b/system/Database/BasePreparedQuery.php index 8c4f252cfb7e..d5bb40bebd0a 100644 --- a/system/Database/BasePreparedQuery.php +++ b/system/Database/BasePreparedQuery.php @@ -14,9 +14,9 @@ namespace CodeIgniter\Database; use ArgumentCountError; -use BadMethodCallException; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Events\Events; +use CodeIgniter\Exceptions\BadMethodCallException; use ErrorException; /** @@ -31,8 +31,7 @@ abstract class BasePreparedQuery implements PreparedQueryInterface /** * The prepared statement itself. * - * @var object|resource|null - * @phpstan-var TStatement|null + * @var TStatement|null */ protected $statement; @@ -61,8 +60,7 @@ abstract class BasePreparedQuery implements PreparedQueryInterface /** * A reference to the db connection to use. * - * @var BaseConnection - * @phpstan-var BaseConnection + * @var BaseConnection */ protected $db; @@ -112,8 +110,7 @@ abstract public function _prepare(string $sql, array $options = []); * Takes a new set of data and runs it against the currently * prepared query. Upon success, will return a Results object. * - * @return bool|ResultInterface - * @phpstan-return bool|ResultInterface + * @return bool|ResultInterface * * @throws DatabaseException */ @@ -137,9 +134,7 @@ public function execute(...$data) $query->setDuration($startTime, $startTime); // This will trigger a rollback if transactions are being used - if ($this->db->transDepth !== 0) { - $this->db->transStatus = false; - } + $this->db->handleTransStatus(); if ($this->db->DBDebug) { // We call this function in order to roll-back queries @@ -259,4 +254,12 @@ public function getErrorMessage(): string { return $this->errorString; } + + /** + * Whether the input contain binary data. + */ + protected function isBinary(string $input): bool + { + return mb_detect_encoding($input, 'UTF-8', true) === false; + } } diff --git a/system/Database/BaseResult.php b/system/Database/BaseResult.php index efbc16722148..c0bdc2aa1025 100644 --- a/system/Database/BaseResult.php +++ b/system/Database/BaseResult.php @@ -27,16 +27,14 @@ abstract class BaseResult implements ResultInterface /** * Connection ID * - * @var object|resource - * @phpstan-var TConnection + * @var TConnection */ public $connID; /** * Result ID * - * @var false|object|resource - * @phpstan-var false|TResult + * @var false|TResult */ public $resultID; @@ -85,10 +83,8 @@ abstract class BaseResult implements ResultInterface /** * Constructor * - * @param object|resource $connID - * @param object|resource $resultID - * @phpstan-param TConnection $connID - * @phpstan-param TResult $resultID + * @param TConnection $connID + * @param TResult $resultID */ public function __construct(&$connID, &$resultID) { @@ -119,7 +115,7 @@ public function getResult(string $type = 'object'): array /** * Returns the results as an array of custom objects. * - * @phpstan-param class-string $className + * @param class-string $className * * @return array */ @@ -211,8 +207,7 @@ public function getResultArray(): array * * If no results, an empty array is returned. * - * @return array - * @phpstan-return list + * @return list */ public function getResultObject(): array { @@ -258,12 +253,10 @@ public function getResultObject(): array * * @template T of object * - * @param int|string $n The index of the results to return, or column name. - * @param string $type The type of result object. 'array', 'object' or class name. - * @phpstan-param class-string|'array'|'object' $type + * @param int|string $n The index of the results to return, or column name. + * @param 'array'|'object'|class-string $type The type of result object. 'array', 'object' or class name. * - * @return array|float|int|object|stdClass|string|null - * @phpstan-return ($n is string ? float|int|string|null : ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null))) + * @return ($n is string ? float|int|string|null : ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null))) */ public function getRow($n = 0, string $type = 'object') { @@ -300,11 +293,10 @@ public function getRow($n = 0, string $type = 'object') * * @template T of object * - * @param int $n The index of the results to return. - * @phpstan-param class-string $className + * @param int $n The index of the results to return. + * @param class-string $className * - * @return object|null - * @phpstan-return T|null + * @return T|null */ public function getCustomRowObject(int $n, string $className) { @@ -537,9 +529,9 @@ abstract protected function fetchAssoc(); /** * Returns the result set as an object. * - * Overridden by child classes. + * @param class-string $className * - * @return Entity|false|object|stdClass + * @return false|object */ - abstract protected function fetchObject(string $className = 'stdClass'); + abstract protected function fetchObject(string $className = stdClass::class); } diff --git a/system/Database/BaseUtils.php b/system/Database/BaseUtils.php index 27b369c5cb7e..a9310e1d4e32 100644 --- a/system/Database/BaseUtils.php +++ b/system/Database/BaseUtils.php @@ -217,7 +217,7 @@ public function getCSVFromResult(ResultInterface $query, string $delim = ',', st $line[] = $enclosure . str_replace( $enclosure, $enclosure . $enclosure, - (string) $item + (string) $item, ) . $enclosure; } @@ -250,7 +250,7 @@ public function getXMLFromResult(ResultInterface $query, array $params = []): st $xml .= $tab . '<' . $element . '>' . $newline; foreach ($row as $key => $val) { - $val = (! empty($val)) ? xml_convert((string) $val) : ''; + $val = empty($val) ? '' : xml_convert((string) $val); $xml .= $tab . $tab . '<' . $key . '>' . $val . '' . $newline; } diff --git a/system/Database/Config.php b/system/Database/Config.php index 03a0dd15743b..fcf700ee3bcb 100644 --- a/system/Database/Config.php +++ b/system/Database/Config.php @@ -14,12 +14,10 @@ namespace CodeIgniter\Database; use CodeIgniter\Config\BaseConfig; +use CodeIgniter\Exceptions\InvalidArgumentException; use Config\Database as DbConfig; -use InvalidArgumentException; /** - * Class Config - * * @see \CodeIgniter\Database\ConfigTest */ class Config extends BaseConfig @@ -83,7 +81,9 @@ public static function connect($group = null, bool $getShared = true) $connection = static::$factory->load($config, $group); - static::$instances[$group] = $connection; + if ($getShared) { + static::$instances[$group] = $connection; + } return $connection; } @@ -141,6 +141,8 @@ public static function seeder(?string $group = null) /** * Ensures the database Connection Manager/Factory is loaded and ready to use. + * + * @return void */ protected static function ensureFactory() { diff --git a/system/Database/ConnectionInterface.php b/system/Database/ConnectionInterface.php index 2f1c932c461d..8e4834486261 100644 --- a/system/Database/ConnectionInterface.php +++ b/system/Database/ConnectionInterface.php @@ -32,16 +32,14 @@ public function initialize(); /** * Connect to the database. * - * @return false|object|resource - * @phpstan-return false|TConnection + * @return false|TConnection */ public function connect(bool $persistent = false); /** * Create a persistent database connection. * - * @return false|object|resource - * @phpstan-return false|TConnection + * @return false|TConnection */ public function persistentConnect(); @@ -59,8 +57,7 @@ public function reconnect(); * get that connection. If you pass either alias in and only a single * connection is present, it must return the sole connection. * - * @return false|object|resource - * @phpstan-return false|TConnection + * @return false|TConnection */ public function getConnection(?string $alias = null); @@ -105,8 +102,7 @@ public function getVersion(): string; * * @param array|string|null $binds * - * @return BaseResult|bool|Query - * @phpstan-return BaseResult|bool|Query + * @return BaseResult|bool|Query */ public function query(string $sql, $binds = null); @@ -115,8 +111,7 @@ public function query(string $sql, $binds = null); * is performed, nor are transactions handled. Simply takes a raw * query string and returns the database-specific result id. * - * @return false|object|resource - * @phpstan-return false|TResult + * @return false|TResult */ public function simpleQuery(string $sql); @@ -144,8 +139,7 @@ public function getLastQuery(); * * @param array|bool|float|int|object|string|null $str * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) + * @return ($str is array ? array : float|int|string) */ public function escape($str); diff --git a/system/Database/Database.php b/system/Database/Database.php index 23b6cd0f8d16..5582e4022db5 100644 --- a/system/Database/Database.php +++ b/system/Database/Database.php @@ -15,7 +15,7 @@ use CodeIgniter\Exceptions\ConfigException; use CodeIgniter\Exceptions\CriticalError; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; /** * Database Connection Factory @@ -96,7 +96,7 @@ protected function parseDSN(array $params): array { $dsn = parse_url($params['DSN']); - if (! $dsn) { + if (in_array($dsn, [0, '', '0', [], false, null], true)) { throw new InvalidArgumentException('Your DSN connection string is invalid.'); } @@ -136,9 +136,9 @@ protected function parseDSN(array $params): array */ protected function initDriver(string $driver, string $class, $argument): object { - $classname = (! str_contains($driver, '\\')) - ? "CodeIgniter\\Database\\{$driver}\\{$class}" - : $driver . '\\' . $class; + $classname = str_contains($driver, '\\') + ? $driver . '\\' . $class + : "CodeIgniter\\Database\\{$driver}\\{$class}"; return new $classname($argument); } diff --git a/system/Database/Exceptions/DataException.php b/system/Database/Exceptions/DataException.php index 18a54171cc29..7cd9f526e6c2 100644 --- a/system/Database/Exceptions/DataException.php +++ b/system/Database/Exceptions/DataException.php @@ -14,7 +14,7 @@ namespace CodeIgniter\Database\Exceptions; use CodeIgniter\Exceptions\DebugTraceableTrait; -use RuntimeException; +use CodeIgniter\Exceptions\RuntimeException; class DataException extends RuntimeException implements ExceptionInterface { @@ -65,21 +65,33 @@ public static function forInvalidArgument(string $argument) return new static(lang('Database.invalidArgument', [$argument])); } + /** + * @return DataException + */ public static function forInvalidAllowedFields(string $model) { return new static(lang('Database.invalidAllowedFields', [$model])); } + /** + * @return DataException + */ public static function forTableNotFound(string $table) { return new static(lang('Database.tableNotFound', [$table])); } + /** + * @return DataException + */ public static function forEmptyInputGiven(string $argument) { return new static(lang('Database.forEmptyInputGiven', [$argument])); } + /** + * @return DataException + */ public static function forFindColumnHaveMultipleColumns() { return new static(lang('Database.forFindColumnHaveMultipleColumns')); diff --git a/system/Database/Exceptions/DatabaseException.php b/system/Database/Exceptions/DatabaseException.php index cdb8e22832ec..77b170e0b407 100644 --- a/system/Database/Exceptions/DatabaseException.php +++ b/system/Database/Exceptions/DatabaseException.php @@ -14,9 +14,9 @@ namespace CodeIgniter\Database\Exceptions; use CodeIgniter\Exceptions\HasExitCodeInterface; -use Error; +use CodeIgniter\Exceptions\RuntimeException; -class DatabaseException extends Error implements ExceptionInterface, HasExitCodeInterface +class DatabaseException extends RuntimeException implements ExceptionInterface, HasExitCodeInterface { public function getExitCode(): int { diff --git a/system/Database/Forge.php b/system/Database/Forge.php index 06044f72b58e..f6eb617fd389 100644 --- a/system/Database/Forge.php +++ b/system/Database/Forge.php @@ -14,8 +14,8 @@ namespace CodeIgniter\Database; use CodeIgniter\Database\Exceptions\DatabaseException; -use InvalidArgumentException; -use RuntimeException; +use CodeIgniter\Exceptions\InvalidArgumentException; +use CodeIgniter\Exceptions\RuntimeException; use Throwable; /** @@ -32,9 +32,9 @@ class Forge protected $db; /** - * List of fields. + * List of fields in the form `[name => attributes]` * - * @var array [name => attributes] + * @var array|string> */ protected $fields = []; @@ -234,8 +234,8 @@ public function createDatabase(string $dbName, bool $ifNotExists = false): bool $ifNotExists ? $this->createDatabaseIfStr : $this->createDatabaseStr, $this->db->escapeIdentifier($dbName), $this->db->charset, - $this->db->DBCollat - ) + $this->db->DBCollat, + ), )) { // @codeCoverageIgnoreStart if ($this->db->DBDebug) { @@ -294,7 +294,7 @@ public function dropDatabase(string $dbName): bool } if (! $this->db->query( - sprintf($this->dropDatabaseStr, $this->db->escapeIdentifier($dbName)) + sprintf($this->dropDatabaseStr, $this->db->escapeIdentifier($dbName)), )) { if ($this->db->DBDebug) { throw new DatabaseException('Unable to drop the specified database.'); @@ -307,7 +307,7 @@ public function dropDatabase(string $dbName): bool $key = array_search( strtolower($dbName), array_map(strtolower(...), $this->db->dataCache['db_names']), - true + true, ); if ($key !== false) { unset($this->db->dataCache['db_names'][$key]); @@ -425,7 +425,7 @@ public function addForeignKey( $tableField = '', string $onUpdate = '', string $onDelete = '', - string $fkName = '' + string $fkName = '', ): Forge { $fieldName = (array) $fieldName; $tableField = (array) $tableField; @@ -525,7 +525,7 @@ public function dropForeignKey(string $table, string $foreignName) $sql = sprintf( (string) $this->dropConstraintStr, $this->db->escapeIdentifiers($this->db->DBPrefix . $table), - $this->db->escapeIdentifiers($foreignName) + $this->db->escapeIdentifiers($foreignName), ); if ($sql === '') { @@ -618,7 +618,7 @@ protected function _createTable(string $table, bool $ifNotExists, array $attribu 'CREATE TABLE', $this->db->escapeIdentifiers($table), $processedFields, - $this->_createTableAttributes($attributes) + $this->_createTableAttributes($attributes), ); } @@ -650,7 +650,7 @@ public function dropTable(string $tableName, bool $ifExists = false, bool $casca return false; } - if ($this->db->DBPrefix && str_starts_with($tableName, $this->db->DBPrefix)) { + if ($this->db->DBPrefix !== '' && str_starts_with($tableName, $this->db->DBPrefix)) { $tableName = substr($tableName, strlen($this->db->DBPrefix)); } @@ -668,7 +668,7 @@ public function dropTable(string $tableName, bool $ifExists = false, bool $casca $key = array_search( strtolower($this->db->DBPrefix . $tableName), array_map(strtolower(...), $this->db->dataCache['table_names']), - true + true, ); if ($key !== false) { @@ -723,14 +723,14 @@ public function renameTable(string $tableName, string $newTableName) $result = $this->db->query(sprintf( $this->renameTableStr, $this->db->escapeIdentifiers($this->db->DBPrefix . $tableName), - $this->db->escapeIdentifiers($this->db->DBPrefix . $newTableName) + $this->db->escapeIdentifiers($this->db->DBPrefix . $newTableName), )); if ($result && ! empty($this->db->dataCache['table_names'])) { $key = array_search( strtolower($this->db->DBPrefix . $tableName), array_map(strtolower(...), $this->db->dataCache['table_names']), - true + true, ); if ($key !== false) { @@ -778,7 +778,7 @@ public function addColumn(string $table, $fields): bool } /** - * @param array|string $columnNames column names to DROP + * @param list|string $columnNames column names to DROP * * @return bool * @@ -846,8 +846,7 @@ public function modifyColumn(string $table, $fields): bool * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return false|list|string|null SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list|false|null) + * @return ($alterType is 'DROP' ? string : false|list|null) */ protected function _alterTable(string $alterType, string $table, $processedFields) { @@ -861,7 +860,7 @@ protected function _alterTable(string $alterType, string $table, $processedField $columnNamesToDrop = explode(',', $columnNamesToDrop); } - $columnNamesToDrop = array_map(fn ($field) => 'DROP COLUMN ' . $this->db->escapeIdentifiers(trim($field)), $columnNamesToDrop); + $columnNamesToDrop = array_map(fn ($field): string => 'DROP COLUMN ' . $this->db->escapeIdentifiers(trim($field)), $columnNamesToDrop); return $sql . implode(', ', $columnNamesToDrop); } @@ -984,6 +983,8 @@ protected function _processColumn(array $processedField): string /** * Performs a data type mapping between different databases. + * + * @return void */ protected function _attributeType(array &$attributes) { @@ -999,6 +1000,8 @@ protected function _attributeType(array &$attributes) * if $attributes['TYPE'] is found in the array * - array(TYPE => UTYPE) will change $field['type'], * from TYPE to UTYPE in case of a match + * + * @return void */ protected function _attributeUnsigned(array &$attributes, array &$field) { @@ -1030,6 +1033,9 @@ protected function _attributeUnsigned(array &$attributes, array &$field) $field['unsigned'] = ($this->unsigned === true) ? ' UNSIGNED' : ''; } + /** + * @return void + */ protected function _attributeDefault(array &$attributes, array &$field) { if ($this->default === false) { @@ -1051,6 +1057,9 @@ protected function _attributeDefault(array &$attributes, array &$field) } } + /** + * @return void + */ protected function _attributeUnique(array &$attributes, array &$field) { if (! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === true) { @@ -1058,10 +1067,13 @@ protected function _attributeUnique(array &$attributes, array &$field) } } + /** + * @return void + */ protected function _attributeAutoIncrement(array &$attributes, array &$field) { if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'int') !== false + && str_contains(strtolower($field['type']), 'int') ) { $field['auto_increment'] = ' AUTO_INCREMENT'; } @@ -1108,10 +1120,12 @@ public function processIndexes(string $table): bool $fk = $this->foreignKeys; if ($this->fields === []) { - $this->fields = array_flip(array_map( - static fn ($columnName) => $columnName->name, - $this->db->getFieldData($this->db->DBPrefix . $table) - )); + $fieldData = $this->db->getFieldData($this->db->DBPrefix . $table); + + $this->fields = array_combine( + array_map(static fn ($columnName) => $columnName->name, $fieldData), + array_fill(0, count($fieldData), []), + ); } $fields = $this->fields; @@ -1252,6 +1266,8 @@ protected function _processForeignKeys(string $table, bool $asQuery = false): ar /** * Resets table creation vars + * + * @return void */ public function reset() { diff --git a/system/Database/Migration.php b/system/Database/Migration.php index ca9e5e0cf266..f3a1dc457629 100644 --- a/system/Database/Migration.php +++ b/system/Database/Migration.php @@ -64,11 +64,15 @@ public function getDBGroup(): ?string /** * Perform a migration step. + * + * @return void */ abstract public function up(); /** * Revert a migration step. + * + * @return void */ abstract public function down(); } diff --git a/system/Database/MigrationRunner.php b/system/Database/MigrationRunner.php index cf736171a7cf..01c4e5ff64ad 100644 --- a/system/Database/MigrationRunner.php +++ b/system/Database/MigrationRunner.php @@ -16,10 +16,10 @@ use CodeIgniter\CLI\CLI; use CodeIgniter\Events\Events; use CodeIgniter\Exceptions\ConfigException; +use CodeIgniter\Exceptions\RuntimeException; use CodeIgniter\I18n\Time; use Config\Database; use Config\Migrations as MigrationsConfig; -use RuntimeException; use stdClass; /** @@ -47,7 +47,7 @@ class MigrationRunner * * @var string|null */ - protected $namespace; + protected $namespace = APP_NAMESPACE; /** * The database Group to migrate. @@ -136,8 +136,6 @@ public function __construct(MigrationsConfig $config, $db = null) $this->enabled = $config->enabled ?? false; $this->table = $config->table ?? 'migrations'; - $this->namespace = APP_NAMESPACE; - // Even if a DB connection is passed, since it is a test, // it is assumed to use the default group name $this->group = is_string($db) ? $db : config(Database::class)->defaultGroup; @@ -317,6 +315,8 @@ public function regress(int $targetBatch = 0, ?string $group = null) * * @param string $path Full path to a valid migration file * @param string $path Namespace of the target migration + * + * @return bool */ public function force(string $path, string $namespace, ?string $group = null) { @@ -389,7 +389,7 @@ public function force(string $path, string $namespace, ?string $group = null) */ public function findMigrations(): array { - $namespaces = $this->namespace ? [$this->namespace] : array_keys(service('autoloader')->getNamespace()); + $namespaces = $this->namespace !== null ? [$this->namespace] : array_keys(service('autoloader')->getNamespace()); $migrations = []; foreach ($namespaces as $namespace) { @@ -450,7 +450,7 @@ protected function migrationFromFile(string $path, string $namespace) $filename = basename($path, '.php'); - if (! preg_match($this->regex, $filename)) { + if (preg_match($this->regex, $filename) !== 1) { return false; } @@ -524,7 +524,7 @@ protected function getMigrationNumber(string $migration): string { preg_match($this->regex, $migration, $matches); - return count($matches) ? $matches[1] : '0'; + return $matches !== [] ? $matches[1] : '0'; } /** @@ -539,7 +539,7 @@ protected function getMigrationName(string $migration): string { preg_match($this->regex, $migration, $matches); - return count($matches) ? $matches[2] : ''; + return $matches !== [] ? $matches[2] : ''; } /** @@ -575,6 +575,8 @@ public function clearCliMessages() /** * Truncates the history table. + * + * @return void */ public function clearHistory() { @@ -587,6 +589,8 @@ public function clearHistory() * Add a history to the table. * * @param object $migration + * + * @return void */ protected function addHistory($migration, int $batch) { @@ -605,7 +609,7 @@ protected function addHistory($migration, int $batch) CLI::color(lang('Migrations.added'), 'yellow'), $migration->namespace, $migration->version, - $migration->class + $migration->class, ); } } @@ -614,6 +618,8 @@ protected function addHistory($migration, int $batch) * Removes a single history * * @param object $history + * + * @return void */ protected function removeHistory($history) { @@ -625,7 +631,7 @@ protected function removeHistory($history) CLI::color(lang('Migrations.removed'), 'yellow'), $history->namespace, $history->version, - $history->class + $history->class, ); } } @@ -645,13 +651,13 @@ public function getHistory(string $group = 'default'): array } // If a namespace was specified then use it - if ($this->namespace) { + if ($this->namespace !== null) { $builder->where('namespace', $this->namespace); } $query = $builder->orderBy('id', 'ASC')->get(); - return ! empty($query) ? $query->getResultObject() : []; + return empty($query) ? [] : $query->getResultObject(); } /** @@ -668,7 +674,7 @@ public function getBatchHistory(int $batch, $order = 'asc'): array ->orderBy('id', $order) ->get(); - return ! empty($query) ? $query->getResultObject() : []; + return empty($query) ? [] : $query->getResultObject(); } /** @@ -700,7 +706,7 @@ public function getLastBatch(): int ->get() ->getResultObject(); - $batch = is_array($batch) && count($batch) + $batch = is_array($batch) && $batch !== [] ? end($batch)->batch : 0; @@ -725,7 +731,7 @@ public function getBatchStart(int $batch): string ->get() ->getResultObject(); - return count($migration) ? $migration[0]->version : '0'; + return $migration !== [] ? $migration[0]->version : '0'; } /** @@ -752,6 +758,8 @@ public function getBatchEnd(int $batch): string /** * Ensures that we have created our migrations table * in the database. + * + * @return void */ public function ensureTable() { diff --git a/system/Database/MySQLi/Builder.php b/system/Database/MySQLi/Builder.php index 81434bc3645d..a9e248fc4584 100644 --- a/system/Database/MySQLi/Builder.php +++ b/system/Database/MySQLi/Builder.php @@ -33,7 +33,7 @@ class Builder extends BaseBuilder * Specifies which sql statements * support the ignore option. * - * @var array + * @var array */ protected $supportedIgnoreStatements = [ 'update' => 'IGNORE', @@ -106,8 +106,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ) . "\n"; $sql .= "SET\n"; @@ -115,12 +115,12 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ? ' = ' . $value : ' = ' . $alias . '.' . $value), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $this->QBOptions['sql'] = $sql; @@ -132,13 +132,13 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } diff --git a/system/Database/MySQLi/Connection.php b/system/Database/MySQLi/Connection.php index b1095003e286..a1c0dcce8479 100644 --- a/system/Database/MySQLi/Connection.php +++ b/system/Database/MySQLi/Connection.php @@ -15,7 +15,8 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\Exceptions\DatabaseException; -use LogicException; +use CodeIgniter\Database\TableName; +use CodeIgniter\Exceptions\LogicException; use mysqli; use mysqli_result; use mysqli_sql_exception; @@ -57,7 +58,7 @@ class Connection extends BaseConnection /** * MySQLi object * - * Has to be preserved without being assigned to $conn_id. + * Has to be preserved without being assigned to $connId. * * @var false|mysqli */ @@ -81,6 +82,16 @@ class Connection extends BaseConnection */ public $numberNative = false; + /** + * Use MYSQLI_CLIENT_FOUND_ROWS + * + * Whether affectedRows() should return number of rows found, + * or number of rows changed, after an UPDATE query. + * + * @var bool + */ + public $foundRows = false; + /** * Connect to the database. * @@ -112,11 +123,11 @@ public function connect(bool $persistent = false) $this->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1); } - if (isset($this->strictOn)) { + if ($this->strictOn !== null) { if ($this->strictOn) { $this->mysqli->options( MYSQLI_INIT_COMMAND, - "SET SESSION sql_mode = CONCAT(@@sql_mode, ',', 'STRICT_ALL_TABLES')" + "SET SESSION sql_mode = CONCAT(@@sql_mode, ',', 'STRICT_ALL_TABLES')", ); } else { $this->mysqli->options( @@ -128,7 +139,7 @@ public function connect(bool $persistent = false) 'STRICT_ALL_TABLES', ''), 'STRICT_TRANS_TABLES,', ''), ',STRICT_TRANS_TABLES', ''), - 'STRICT_TRANS_TABLES', '')" + 'STRICT_TRANS_TABLES', '')", ); } } @@ -175,13 +186,17 @@ public function connect(bool $persistent = false) $ssl['cert'] ?? null, $ssl['ca'] ?? null, $ssl['capath'] ?? null, - $ssl['cipher'] ?? null + $ssl['cipher'] ?? null, ); } $clientFlags += MYSQLI_CLIENT_SSL; } + if ($this->foundRows) { + $clientFlags += MYSQLI_CLIENT_FOUND_ROWS; + } + try { if ($this->mysqli->real_connect( $hostname, @@ -190,10 +205,10 @@ public function connect(bool $persistent = false) $this->database, $port, $socket, - $clientFlags + $clientFlags, )) { // Prior to version 5.7.3, MySQL silently downgrades to an unencrypted connection if SSL setup fails - if (($clientFlags & MYSQLI_CLIENT_SSL) && version_compare($this->mysqli->client_info, 'mysqlnd 5.7.3', '<=') + if (($clientFlags & MYSQLI_CLIENT_SSL) !== 0 && version_compare($this->mysqli->client_info, 'mysqlnd 5.7.3', '<=') && empty($this->mysqli->query("SHOW STATUS LIKE 'ssl_cipher'")->fetch_object()->Value) ) { $this->mysqli->close(); @@ -297,7 +312,7 @@ public function getVersion(): string /** * Executes the query against the database. * - * @return false|mysqli_result; + * @return false|mysqli_result */ protected function execute(string $sql) { @@ -381,7 +396,7 @@ public function escapeLikeStringDirect($str) return str_replace( [$this->likeEscapeChar, '%', '_'], ['\\' . $this->likeEscapeChar, '\\%', '\\_'], - $str + $str, ); } @@ -395,7 +410,7 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n { $sql = 'SHOW TABLES FROM ' . $this->escapeIdentifier($this->database); - if ($tableName !== null) { + if ((string) $tableName !== '') { return $sql . ' LIKE ' . $this->escape($tableName); } @@ -408,10 +423,19 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n /** * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string|TableName $table */ - protected function _listColumns(string $table = ''): string + protected function _listColumns($table = ''): string { - return 'SHOW COLUMNS FROM ' . $this->protectIdentifiers($table, true, null, false); + $tableName = $this->protectIdentifiers( + $table, + true, + null, + false, + ); + + return 'SHOW COLUMNS FROM ' . $tableName; } /** @@ -462,7 +486,9 @@ protected function _indexData(string $table): array throw new DatabaseException(lang('Database.failGetIndexData')); } - if (! $indexes = $query->getResultArray()) { + $indexes = $query->getResultArray(); + + if ($indexes === []) { return []; } diff --git a/system/Database/MySQLi/Forge.php b/system/Database/MySQLi/Forge.php index 3bde0c518daf..9482f7e2329a 100644 --- a/system/Database/MySQLi/Forge.php +++ b/system/Database/MySQLi/Forge.php @@ -116,11 +116,11 @@ protected function _createTableAttributes(array $attributes): string } } - if ($this->db->charset !== '' && ! strpos($sql, 'CHARACTER SET') && ! strpos($sql, 'CHARSET')) { + if ($this->db->charset !== '' && ! str_contains($sql, 'CHARACTER SET') && ! str_contains($sql, 'CHARSET')) { $sql .= ' DEFAULT CHARACTER SET = ' . $this->db->escapeString($this->db->charset); } - if ($this->db->DBCollat !== '' && ! strpos($sql, 'COLLATE')) { + if ($this->db->DBCollat !== '' && ! str_contains($sql, 'COLLATE')) { $sql .= ' COLLATE = ' . $this->db->escapeString($this->db->DBCollat); } @@ -135,8 +135,7 @@ protected function _createTableAttributes(array $attributes): string * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return list|string SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list) + * @return ($alterType is 'DROP' ? string : list) */ protected function _alterTable(string $alterType, string $table, $processedFields) { @@ -258,7 +257,7 @@ public function dropPrimaryKey(string $table, string $keyName = ''): bool { $sql = sprintf( 'ALTER TABLE %s DROP PRIMARY KEY', - $this->db->escapeIdentifiers($this->db->DBPrefix . $table) + $this->db->escapeIdentifiers($this->db->DBPrefix . $table), ); return $this->db->query($sql); diff --git a/system/Database/MySQLi/PreparedQuery.php b/system/Database/MySQLi/PreparedQuery.php index e9a6c6d10e30..05ef5f151b7b 100644 --- a/system/Database/MySQLi/PreparedQuery.php +++ b/system/Database/MySQLi/PreparedQuery.php @@ -13,9 +13,9 @@ namespace CodeIgniter\Database\MySQLi; -use BadMethodCallException; use CodeIgniter\Database\BasePreparedQuery; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Exceptions\BadMethodCallException; use mysqli; use mysqli_result; use mysqli_sql_exception; @@ -66,15 +66,19 @@ public function _execute(array $data): bool throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); } - // First off -bind the parameters - $bindTypes = ''; + // First off - bind the parameters + $bindTypes = ''; + $binaryData = []; // Determine the type string - foreach ($data as $item) { + foreach ($data as $key => $item) { if (is_int($item)) { $bindTypes .= 'i'; } elseif (is_numeric($item)) { $bindTypes .= 'd'; + } elseif (is_string($item) && $this->isBinary($item)) { + $bindTypes .= 'b'; + $binaryData[$key] = $item; } else { $bindTypes .= 's'; } @@ -83,6 +87,11 @@ public function _execute(array $data): bool // Bind it $this->statement->bind_param($bindTypes, ...$data); + // Stream binary data + foreach ($binaryData as $key => $value) { + $this->statement->send_long_data($key, $value); + } + try { return $this->statement->execute(); } catch (mysqli_sql_exception $e) { diff --git a/system/Database/OCI8/Builder.php b/system/Database/OCI8/Builder.php index 24a6bb53b07c..2e62b3121cbd 100644 --- a/system/Database/OCI8/Builder.php +++ b/system/Database/OCI8/Builder.php @@ -48,16 +48,6 @@ class Builder extends BaseBuilder */ protected $countString = 'SELECT COUNT(1) '; - /** - * Limit used flag - * - * If we use LIMIT, we'll add a field that will - * throw off num_fields later. - * - * @var bool - */ - protected $limitUsed = false; - /** * A reference to the database connection. * @@ -89,13 +79,13 @@ protected function _insertBatch(string $table, array $keys, array $values): stri $data = implode( " FROM DUAL UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . " FROM DUAL\n"; } @@ -107,7 +97,7 @@ protected function _insertBatch(string $table, array $keys, array $values): stri */ protected function _replace(string $table, array $keys, array $values): string { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); + $fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys); $uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames): bool { $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); @@ -126,7 +116,7 @@ protected function _replace(string $table, array $keys, array $values): string $sql = 'MERGE INTO ' . $table . "\n USING (SELECT "; - $sql .= implode(', ', array_map(static fn ($columnName, $value) => $value . ' ' . $columnName, $keys, $values)); + $sql .= implode(', ', array_map(static fn ($columnName, $value): string => $value . ' ' . $columnName, $keys, $values)); $sql .= ' FROM DUAL) "_replace" ON ( '; @@ -134,16 +124,16 @@ protected function _replace(string $table, array $keys, array $values): string $onList[] = '1 != 1'; foreach ($uniqueIndexes as $index) { - $onList[] = '(' . implode(' AND ', array_map(static fn ($columnName) => $table . '."' . $columnName . '" = "_replace"."' . $columnName . '"', $index->fields)) . ')'; + $onList[] = '(' . implode(' AND ', array_map(static fn ($columnName): string => $table . '."' . $columnName . '" = "_replace"."' . $columnName . '"', $index->fields)) . ')'; } $sql .= implode(' OR ', $onList) . ') WHEN MATCHED THEN UPDATE SET '; - $sql .= implode(', ', array_map(static fn ($columnName) => $columnName . ' = "_replace".' . $columnName, $replaceableFields)); + $sql .= implode(', ', array_map(static fn ($columnName): string => $columnName . ' = "_replace".' . $columnName, $replaceableFields)); $sql .= ' WHEN NOT MATCHED THEN INSERT (' . implode(', ', $replaceableFields) . ') VALUES '; - return $sql . (' (' . implode(', ', array_map(static fn ($columnName) => '"_replace".' . $columnName, $replaceableFields)) . ')'); + return $sql . (' (' . implode(', ', array_map(static fn ($columnName): string => '"_replace".' . $columnName, $replaceableFields)) . ')'); } /** @@ -214,28 +204,13 @@ protected function _update(string $table, array $values): string protected function _limit(string $sql, bool $offsetIgnore = false): string { $offset = (int) ($offsetIgnore === false ? $this->QBOffset : 0); - if (version_compare($this->db->getVersion(), '12.1', '>=')) { - // OFFSET-FETCH can be used only with the ORDER BY clause - if (empty($this->QBOrderBy)) { - $sql .= ' ORDER BY 1'; - } - return $sql . ' OFFSET ' . $offset . ' ROWS FETCH NEXT ' . $this->QBLimit . ' ROWS ONLY'; + // OFFSET-FETCH can be used only with the ORDER BY clause + if (empty($this->QBOrderBy)) { + $sql .= ' ORDER BY 1'; } - $this->limitUsed = true; - $limitTemplateQuery = 'SELECT * FROM (SELECT INNER_QUERY.*, ROWNUM RNUM FROM (%s) INNER_QUERY WHERE ROWNUM < %d)' . ($offset !== 0 ? ' WHERE RNUM >= %d' : ''); - - return sprintf($limitTemplateQuery, $sql, $offset + $this->QBLimit + 1, $offset); - } - - /** - * Resets the query builder values. Called by the get() function - */ - protected function resetSelect() - { - $this->limitUsed = false; - parent::resetSelect(); + return $sql . ' OFFSET ' . $offset . ' ROWS FETCH NEXT ' . $this->QBLimit . ' ROWS ONLY'; } /** @@ -287,8 +262,8 @@ protected function _updateBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ) . ")\n"; $sql .= "WHEN MATCHED THEN UPDATE\n"; @@ -298,12 +273,12 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $table . '.' . $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $table . '.' . $key . ($value instanceof RawSql ? ' = ' . $value : ' = ' . $alias . '.' . $value), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $this->QBOptions['sql'] = $sql; @@ -315,13 +290,13 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )) . ' FROM DUAL', - $values - ) + $values, + ), ) . "\n"; } @@ -342,7 +317,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $constraints = $this->QBOptions['constraints'] ?? []; if (empty($constraints)) { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); + $fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys); $uniqueIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames): bool { $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); @@ -392,8 +367,8 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ) . ")\n"; $sql .= "WHEN MATCHED THEN UPDATE SET\n"; @@ -401,18 +376,18 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? " = {$value}" : " = {$alias}.{$value}"), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $sql .= "\nWHEN NOT MATCHED THEN INSERT (" . implode(', ', $keys) . ")\nVALUES "; $sql .= (' (' - . implode(', ', array_map(static fn ($columnName) => "{$alias}.{$columnName}", $keys)) + . implode(', ', array_map(static fn ($columnName): string => "{$alias}.{$columnName}", $keys)) . ')'); $this->QBOptions['sql'] = $sql; @@ -424,13 +399,13 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $data = implode( " FROM DUAL UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . " FROM DUAL\n"; } @@ -477,8 +452,8 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ); // convert binds in where @@ -491,7 +466,7 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri $sql .= ' ' . str_replace( 'WHERE ', 'AND ', - $this->compileWhereHaving('QBWhere') + $this->compileWhereHaving('QBWhere'), ) . ')'; $this->QBOptions['sql'] = $sql; @@ -503,13 +478,13 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri $data = implode( " FROM DUAL UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . " FROM DUAL\n"; } diff --git a/system/Database/OCI8/Connection.php b/system/Database/OCI8/Connection.php index c59d588ccec1..796b412982a9 100644 --- a/system/Database/OCI8/Connection.php +++ b/system/Database/OCI8/Connection.php @@ -16,6 +16,7 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Database\Query; +use CodeIgniter\Database\TableName; use ErrorException; use stdClass; @@ -192,9 +193,14 @@ public function getVersion(): string return $this->dataCache['version']; } - if (! $this->connID || ($versionString = oci_server_version($this->connID)) === false) { + if ($this->connID === false) { + $this->initialize(); + } + + if (($versionString = oci_server_version($this->connID)) === false) { return ''; } + if (preg_match('#Release\s(\d+(?:\.\d+)+)#', $versionString, $match)) { return $this->dataCache['version'] = $match[1]; } @@ -284,18 +290,25 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n /** * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string|TableName $table */ - protected function _listColumns(string $table = ''): string + protected function _listColumns($table = ''): string { - if (str_contains($table, '.')) { - sscanf($table, '%[^.].%s', $owner, $table); + if ($table instanceof TableName) { + $tableName = $this->escape(strtoupper($table->getActualTableName())); + $owner = $this->username; + } elseif (str_contains($table, '.')) { + sscanf($table, '%[^.].%s', $owner, $tableName); + $tableName = $this->escape(strtoupper($this->DBPrefix . $tableName)); } else { - $owner = $this->username; + $owner = $this->username; + $tableName = $this->escape(strtoupper($this->DBPrefix . $table)); } return 'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE UPPER(OWNER) = ' . $this->escape(strtoupper($owner)) . ' - AND UPPER(TABLE_NAME) = ' . $this->escape(strtoupper($this->DBPrefix . $table)); + AND UPPER(TABLE_NAME) = ' . $tableName; } /** @@ -336,12 +349,25 @@ protected function _fieldData(string $table): array $retval[$i]->max_length = $length; $retval[$i]->nullable = $query[$i]->NULLABLE === 'Y'; - $retval[$i]->default = $query[$i]->DATA_DEFAULT; + $retval[$i]->default = $this->normalizeDefault($query[$i]->DATA_DEFAULT); } return $retval; } + /** + * Removes trailing whitespace from default values + * returned in database column metadata queries. + */ + private function normalizeDefault(?string $default): ?string + { + if ($default === null) { + return $default; + } + + return rtrim($default); + } + /** * Returns an array of objects with index data * @@ -523,7 +549,7 @@ public function storedProcedure(string $procedureName, array $params) $sql = sprintf( 'BEGIN %s (' . substr(str_repeat(',%s', count($params)), 1) . '); END;', $procedureName, - ...array_map(static fn ($row) => $row['name'], $params) + ...array_map(static fn ($row) => $row['name'], $params), ); $this->resetStmtId = false; @@ -554,7 +580,7 @@ protected function bindParams($params) $param['name'], $param['value'], $param['length'] ?? -1, - $param['type'] ?? SQLT_CHR + $param['type'] ?? SQLT_CHR, ); } } diff --git a/system/Database/OCI8/Forge.php b/system/Database/OCI8/Forge.php index 7d81cff8b506..8f71169115ce 100644 --- a/system/Database/OCI8/Forge.php +++ b/system/Database/OCI8/Forge.php @@ -100,8 +100,7 @@ class Forge extends BaseForge * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return list|string SQL string - * @phpstan-return ($alterType is 'DROP' ? string : list) + * @return ($alterType is 'DROP' ? string : list) */ protected function _alterTable(string $alterType, string $table, $processedFields) { @@ -112,7 +111,7 @@ protected function _alterTable(string $alterType, string $table, $processedField $fields = array_map( fn ($field) => $this->db->escapeIdentifiers(trim($field)), - is_string($columnNamesToDrop) ? explode(',', $columnNamesToDrop) : $columnNamesToDrop + is_string($columnNamesToDrop) ? explode(',', $columnNamesToDrop) : $columnNamesToDrop, ); return $sql . ' DROP (' . implode(',', $fields) . ') CASCADE CONSTRAINT INVALIDATE'; @@ -184,7 +183,7 @@ protected function _alterTable(string $alterType, string $table, $processedField protected function _attributeAutoIncrement(array &$attributes, array &$field) { if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'NUMBER') !== false + && str_contains(strtolower($field['type']), 'number') && version_compare($this->db->getVersion(), '12.1', '>=') ) { $field['auto_increment'] = ' GENERATED BY DEFAULT ON NULL AS IDENTITY'; diff --git a/system/Database/OCI8/PreparedQuery.php b/system/Database/OCI8/PreparedQuery.php index feffc3be50b5..390ed938fc1c 100644 --- a/system/Database/OCI8/PreparedQuery.php +++ b/system/Database/OCI8/PreparedQuery.php @@ -13,9 +13,10 @@ namespace CodeIgniter\Database\OCI8; -use BadMethodCallException; use CodeIgniter\Database\BasePreparedQuery; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Exceptions\BadMethodCallException; +use OCILob; /** * Prepared query for OCI8 @@ -73,12 +74,24 @@ public function _execute(array $data): bool throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); } + $binaryData = null; + foreach (array_keys($data) as $key) { - oci_bind_by_name($this->statement, ':' . $key, $data[$key]); + if (is_string($data[$key]) && $this->isBinary($data[$key])) { + $binaryData = oci_new_descriptor($this->db->connID, OCI_D_LOB); + $binaryData->writeTemporary($data[$key], OCI_TEMP_BLOB); + oci_bind_by_name($this->statement, ':' . $key, $binaryData, -1, OCI_B_BLOB); + } else { + oci_bind_by_name($this->statement, ':' . $key, $data[$key]); + } } $result = oci_execute($this->statement, $this->db->commitMode); + if ($binaryData instanceof OCILob) { + $binaryData->free(); + } + if ($result && $this->lastInsertTableName !== '') { $this->db->lastInsertedTableName = $this->lastInsertTableName; } diff --git a/system/Database/OCI8/Result.php b/system/Database/OCI8/Result.php index 0039e90ae9b4..1049847b7af0 100644 --- a/system/Database/OCI8/Result.php +++ b/system/Database/OCI8/Result.php @@ -37,7 +37,7 @@ public function getFieldCount(): int */ public function getFieldNames(): array { - return array_map(fn ($fieldIndex) => oci_field_name($this->resultID, $fieldIndex), range(1, $this->getFieldCount())); + return array_map(fn ($fieldIndex): false|string => oci_field_name($this->resultID, $fieldIndex), range(1, $this->getFieldCount())); } /** diff --git a/system/Database/Postgre/Builder.php b/system/Database/Postgre/Builder.php index faae0eda8a9b..126ab5741892 100644 --- a/system/Database/Postgre/Builder.php +++ b/system/Database/Postgre/Builder.php @@ -16,7 +16,7 @@ use CodeIgniter\Database\BaseBuilder; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Database\RawSql; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; /** * Builder for Postgre @@ -36,7 +36,7 @@ class Builder extends BaseBuilder * Specifies which sql statements * support the ignore option. * - * @var array + * @var array */ protected $supportedIgnoreStatements = [ 'insert' => 'ON CONFLICT DO NOTHING', @@ -353,12 +353,12 @@ protected function _updateBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? ' = ' . $value : ' = ' . $that->cast($alias . '.' . $value, $that->getFieldType($table, $key))), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ) . "\n"; $sql .= "FROM (\n{:_table_:}"; @@ -381,8 +381,8 @@ static function ($key, $value) use ($table, $alias, $that): string|RawSql { . $that->cast($alias . '.' . $value, $that->getFieldType($table, $value)); }, array_keys($constraints), - $constraints - ) + $constraints, + ), ); $this->QBOptions['sql'] = $sql; @@ -394,13 +394,13 @@ static function ($key, $value) use ($table, $alias, $that): string|RawSql { $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } @@ -458,7 +458,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri // if this is the first iteration of batch then we need to build skeleton sql if ($sql === '') { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); + $fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys); $constraints = $this->QBOptions['constraints'] ?? []; @@ -469,9 +469,8 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri return ($index->type === 'UNIQUE' || $index->type === 'PRIMARY') && $hasAllFields; }); - foreach (array_map(static fn ($index) => $index->fields, $allIndexes) as $index) { - $constraints[] = current($index); - // only one index can be used? + foreach ($allIndexes as $index) { + $constraints = $index->fields; break; } @@ -524,12 +523,12 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? " = {$value}" : " = {$alias}.{$value}"), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $this->QBOptions['sql'] = $sql; @@ -584,15 +583,15 @@ static function ($key, $value) use ($table, $alias, $that): RawSql|string { return $table . '.' . $key . ' = ' . $that->cast( $alias . '.' . $value, - $that->getFieldType($table, $key) + $that->getFieldType($table, $key), ); } return $table . '.' . $value . ' = ' . $alias . '.' . $value; }, array_keys($constraints), - $constraints - ) + $constraints, + ), ); // convert binds in where @@ -605,7 +604,7 @@ static function ($key, $value) use ($table, $alias, $that): RawSql|string { $sql .= ' ' . str_replace( 'WHERE ', 'AND ', - $this->compileWhereHaving('QBWhere') + $this->compileWhereHaving('QBWhere'), ); $this->QBOptions['sql'] = $sql; @@ -617,13 +616,13 @@ static function ($key, $value) use ($table, $alias, $that): RawSql|string { $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } diff --git a/system/Database/Postgre/Connection.php b/system/Database/Postgre/Connection.php index 2826ab1bf53c..71549ad0b08f 100644 --- a/system/Database/Postgre/Connection.php +++ b/system/Database/Postgre/Connection.php @@ -16,6 +16,7 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Database\RawSql; +use CodeIgniter\Database\TableName; use ErrorException; use PgSql\Connection as PgSqlConnection; use PgSql\Result as PgSqlResult; @@ -227,6 +228,10 @@ protected function getDriverFunctionPrefix(): string */ public function affectedRows(): int { + if ($this->resultID === false) { + return 0; + } + return pg_affected_rows($this->resultID); } @@ -237,8 +242,7 @@ public function affectedRows(): int * * @param array|bool|float|int|object|string|null $str * - * @return array|float|int|string - * @phpstan-return ($str is array ? array : float|int|string) + * @return ($str is array ? array : float|int|string) */ public function escape($str) { @@ -301,13 +305,20 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n /** * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string|TableName $table */ - protected function _listColumns(string $table = ''): string + protected function _listColumns($table = ''): string { + if ($table instanceof TableName) { + $tableName = $this->escape($table->getActualTableName()); + } else { + $tableName = $this->escape($this->DBPrefix . strtolower($table)); + } + return 'SELECT "column_name" FROM "information_schema"."columns" - WHERE LOWER("table_name") = ' - . $this->escape($this->DBPrefix . strtolower($table)) + WHERE LOWER("table_name") = ' . $tableName . ' ORDER BY "ordinal_position"'; } @@ -371,7 +382,7 @@ protected function _indexData(string $table): array $obj = new stdClass(); $obj->name = $row->indexname; $_fields = explode(',', preg_replace('/^.*\((.+?)\)$/', '$1', trim($row->indexdef))); - $obj->fields = array_map(static fn ($v) => trim($v), $_fields); + $obj->fields = array_map(trim(...), $_fields); if (str_starts_with($row->indexdef, 'CREATE UNIQUE INDEX pk')) { $obj->type = 'PRIMARY'; @@ -463,7 +474,7 @@ public function error(): array { return [ 'code' => '', - 'message' => pg_last_error($this->connID) ?: '', + 'message' => pg_last_error($this->connID), ]; } @@ -505,6 +516,8 @@ public function insertID() /** * Build a DSN from the provided parameters + * + * @return void */ protected function buildDSN() { diff --git a/system/Database/Postgre/Forge.php b/system/Database/Postgre/Forge.php index b516172737ae..d8e7d5886604 100644 --- a/system/Database/Postgre/Forge.php +++ b/system/Database/Postgre/Forge.php @@ -86,8 +86,7 @@ protected function _createTableAttributes(array $attributes): string * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return false|list|string SQL string or false - * @phpstan-return ($alterType is 'DROP' ? string : list|false) + * @return ($alterType is 'DROP' ? string : false|list) */ protected function _alterTable(string $alterType, string $table, $processedFields) { @@ -110,7 +109,7 @@ protected function _alterTable(string $alterType, string $table, $processedField if (! empty($field['default'])) { $sqls[] = $sql . ' ALTER COLUMN ' . $this->db->escapeIdentifiers($field['name']) - . " SET DEFAULT {$field['default']}"; + . " SET {$field['default']}"; } $nullable = true; // Nullable by default. @@ -154,7 +153,7 @@ protected function _processColumn(array $processedField): string protected function _attributeType(array &$attributes) { // Reset field lengths for data types that don't support it - if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== false) { + if (isset($attributes['CONSTRAINT']) && str_contains(strtolower($attributes['TYPE']), 'int')) { $attributes['CONSTRAINT'] = null; } @@ -173,6 +172,10 @@ protected function _attributeType(array &$attributes) $attributes['TYPE'] = 'TIMESTAMP'; break; + case 'BLOB': + $attributes['TYPE'] = 'BYTEA'; + break; + default: break; } diff --git a/system/Database/Postgre/PreparedQuery.php b/system/Database/Postgre/PreparedQuery.php index 33a6c8044c7d..08900a6ddcfd 100644 --- a/system/Database/Postgre/PreparedQuery.php +++ b/system/Database/Postgre/PreparedQuery.php @@ -13,9 +13,9 @@ namespace CodeIgniter\Database\Postgre; -use BadMethodCallException; use CodeIgniter\Database\BasePreparedQuery; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Exceptions\BadMethodCallException; use Exception; use PgSql\Connection as PgSqlConnection; use PgSql\Result as PgSqlResult; @@ -87,6 +87,12 @@ public function _execute(array $data): bool throw new BadMethodCallException('You must call prepare before trying to execute a prepared statement.'); } + foreach ($data as &$item) { + if (is_string($item) && $this->isBinary($item)) { + $item = pg_escape_bytea($this->db->connID, $item); + } + } + $this->result = pg_execute($this->db->connID, $this->name, $data); return (bool) $this->result; diff --git a/system/Database/PreparedQueryInterface.php b/system/Database/PreparedQueryInterface.php index d9e11cd520d6..c49c2e7bb551 100644 --- a/system/Database/PreparedQueryInterface.php +++ b/system/Database/PreparedQueryInterface.php @@ -13,7 +13,7 @@ namespace CodeIgniter\Database; -use BadMethodCallException; +use CodeIgniter\Exceptions\BadMethodCallException; /** * @template TConnection @@ -26,8 +26,7 @@ interface PreparedQueryInterface * Takes a new set of data and runs it against the currently * prepared query. Upon success, will return a Results object. * - * @return bool|ResultInterface - * @phpstan-return bool|ResultInterface + * @return bool|ResultInterface */ public function execute(...$data); diff --git a/system/Database/Query.php b/system/Database/Query.php index ba8e9066063f..c74ba6a687ab 100644 --- a/system/Database/Query.php +++ b/system/Database/Query.php @@ -287,6 +287,8 @@ public function getOriginalQuery(): string * Escapes and inserts any binds into the finalQueryString property. * * @see https://regex101.com/r/EUEhay/5 + * + * @return void */ protected function compileBinds() { @@ -342,7 +344,7 @@ protected function matchNamedBinds(string $sql, array $binds): string */ protected function matchSimpleBinds(string $sql, array $binds, int $bindCount, int $ml): string { - if ($c = preg_match_all("/'[^']*'/", $sql, $matches)) { + if ($c = preg_match_all("/'[^']*'/", $sql, $matches) >= 1) { $c = preg_match_all('/' . preg_quote($this->bindMarker, '/') . '/i', str_replace($matches[0], str_replace($this->bindMarker, str_repeat(' ', $ml), $matches[0]), $sql, $c), $matches, PREG_OFFSET_CAPTURE); // Bind values' count must match the count of markers in the query @@ -418,7 +420,7 @@ public function debugToolbarDisplay(): string */ $search = '/\b(?:' . implode('|', $highlight) . ')\b(?![^(')]*'(?:(?:[^(')]*'){2})*[^(')]*$)/'; - return preg_replace_callback($search, static fn ($matches) => '' . str_replace(' ', ' ', $matches[0]) . '', $sql); + return preg_replace_callback($search, static fn ($matches): string => '' . str_replace(' ', ' ', $matches[0]) . '', $sql); } /** diff --git a/system/Database/QueryInterface.php b/system/Database/QueryInterface.php index 19cbdd0edc4a..86eb01f4e169 100644 --- a/system/Database/QueryInterface.php +++ b/system/Database/QueryInterface.php @@ -26,7 +26,7 @@ interface QueryInterface * * @param mixed $binds * - * @return mixed + * @return $this */ public function setQuery(string $sql, $binds = null, bool $setEscape = true); @@ -34,7 +34,7 @@ public function setQuery(string $sql, $binds = null, bool $setEscape = true); * Returns the final, processed query string after binding, etal * has been performed. * - * @return mixed + * @return string */ public function getQuery(); @@ -43,7 +43,7 @@ public function getQuery(); * for it's start and end values. If no end value is present, will * use the current time to determine total duration. * - * @return mixed + * @return $this */ public function setDuration(float $start, ?float $end = null); @@ -57,6 +57,8 @@ public function getDuration(int $decimals = 6): string; /** * Stores the error description that happened for this query. + * + * @return $this */ public function setError(int $code, string $error); @@ -83,7 +85,7 @@ public function isWriteType(): bool; /** * Swaps out one table prefix for a new one. * - * @return mixed + * @return $this */ public function swapPrefix(string $orig, string $swap); } diff --git a/system/Database/ResultInterface.php b/system/Database/ResultInterface.php index ba26629cd518..89febfef835c 100644 --- a/system/Database/ResultInterface.php +++ b/system/Database/ResultInterface.php @@ -61,12 +61,10 @@ public function getResultObject(): array; * * @template T of object * - * @param int|string $n The index of the results to return, or column name. - * @param string $type The type of result object. 'array', 'object' or class name. - * @phpstan-param class-string|'array'|'object' $type + * @param int|string $n The index of the results to return, or column name. + * @param 'array'|'object'|class-string $type The type of result object. 'array', 'object' or class name. * - * @return array|float|int|object|stdClass|string|null - * @phpstan-return ($n is string ? float|int|string|null : ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null))) + * @return ($n is string ? float|int|string|null : ($type is 'object' ? stdClass|null : ($type is 'array' ? array|null : T|null))) */ public function getRow($n = 0, string $type = 'object'); @@ -77,11 +75,10 @@ public function getRow($n = 0, string $type = 'object'); * * @template T of object * - * @param int $n The index of the results to return. - * @phpstan-param class-string $className + * @param int $n The index of the results to return. + * @param class-string $className * - * @return object|null - * @phpstan-return T|null + * @return T|null */ public function getCustomRowObject(int $n, string $className); @@ -170,6 +167,8 @@ public function getFieldData(): array; /** * Frees the current result. + * + * @return void */ public function freeResult(); diff --git a/system/Database/SQLSRV/Builder.php b/system/Database/SQLSRV/Builder.php index c1272cdcf326..0b17a52ff344 100644 --- a/system/Database/SQLSRV/Builder.php +++ b/system/Database/SQLSRV/Builder.php @@ -122,7 +122,7 @@ public function join(string $table, $cond, string $type = '', ?bool $escape = nu $cond = ' ON ' . $cond; } else { // Split multiple conditions - if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE)) { + if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE) >= 1) { $conditions = []; $joints = $joints[0]; array_unshift($joints, ['', 0]); @@ -584,7 +584,7 @@ protected function compileSelect($selectOverride = false): string if ($selectOverride !== false) { $sql = $selectOverride; } else { - $sql = (! $this->QBDistinct) ? 'SELECT ' : 'SELECT DISTINCT '; + $sql = $this->QBDistinct ? 'SELECT DISTINCT ' : 'SELECT '; // SQL Server can't work with select * if group by is specified if (empty($this->QBSelect) && $this->QBGroupBy !== [] && is_array($this->QBGroupBy)) { @@ -694,7 +694,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $identityInFields = in_array($tableIdentity, $keys, true); - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '"'), $keys); + $fieldNames = array_map(static fn ($columnName): string => trim($columnName, '"'), $keys); if (empty($constraints)) { $tableIndexes = $this->db->getIndexData($table); @@ -764,8 +764,8 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri ) ), array_keys($constraints), - $constraints - ) + $constraints, + ), ) . ")\n"; $sql .= "WHEN MATCHED THEN UPDATE SET\n"; @@ -773,12 +773,12 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? ' = ' . $value : " = {$alias}.{$value}"), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $sql .= "\nWHEN NOT MATCHED THEN INSERT (" . implode(', ', $keys) . ")\nVALUES "; @@ -787,13 +787,13 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri '(' . implode( ', ', array_map( - static fn ($columnName) => $columnName === $tableIdentity + static fn ($columnName): string => $columnName === $tableIdentity ? "CASE WHEN {$alias}.{$columnName} IS NULL THEN (SELECT " . 'isnull(IDENT_CURRENT(\'' . $fullTableName . '\')+IDENT_INCR(\'' . $fullTableName . "'),1)) ELSE {$alias}.{$columnName} END" : "{$alias}.{$columnName}", - $keys - ) + $keys, + ), ) . ');' ); diff --git a/system/Database/SQLSRV/Connection.php b/system/Database/SQLSRV/Connection.php index 7d60ad1cabd1..1ebd73908ebd 100644 --- a/system/Database/SQLSRV/Connection.php +++ b/system/Database/SQLSRV/Connection.php @@ -15,6 +15,7 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Database\TableName; use stdClass; /** @@ -225,12 +226,20 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n /** * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string|TableName $table */ - protected function _listColumns(string $table = ''): string + protected function _listColumns($table = ''): string { + if ($table instanceof TableName) { + $tableName = $this->escape(strtolower($table->getActualTableName())); + } else { + $tableName = $this->escape($this->DBPrefix . strtolower($table)); + } + return 'SELECT [COLUMN_NAME] ' . ' FROM [INFORMATION_SCHEMA].[COLUMNS]' - . ' WHERE [TABLE_NAME] = ' . $this->escape($this->DBPrefix . $table) + . ' WHERE [TABLE_NAME] = ' . $tableName . ' AND [TABLE_SCHEMA] = ' . $this->escape($this->schema); } @@ -257,7 +266,7 @@ protected function _indexData(string $table): array $obj->name = $row->index_name; $_fields = explode(',', trim($row->index_keys)); - $obj->fields = array_map(static fn ($v) => trim($v), $_fields); + $obj->fields = array_map(trim(...), $_fields); if (str_contains($row->index_description, 'primary key located on')) { $obj->type = 'PRIMARY'; @@ -368,15 +377,49 @@ protected function _fieldData(string $table): array $retVal[$i]->max_length = $query[$i]->CHARACTER_MAXIMUM_LENGTH > 0 ? $query[$i]->CHARACTER_MAXIMUM_LENGTH - : $query[$i]->NUMERIC_PRECISION; + : ( + $query[$i]->CHARACTER_MAXIMUM_LENGTH === -1 + ? 'max' + : $query[$i]->NUMERIC_PRECISION + ); $retVal[$i]->nullable = $query[$i]->IS_NULLABLE !== 'NO'; - $retVal[$i]->default = $query[$i]->COLUMN_DEFAULT; + $retVal[$i]->default = $this->normalizeDefault($query[$i]->COLUMN_DEFAULT); } return $retVal; } + /** + * Normalizes SQL Server COLUMN_DEFAULT values. + * Removes wrapping parentheses and handles basic conversions. + */ + private function normalizeDefault(?string $default): ?string + { + if ($default === null) { + return null; + } + + $default = trim($default); + + // Remove outer parentheses (handles both single and double wrapping) + while (preg_match('/^\((.*)\)$/', $default, $matches)) { + $default = trim($matches[1]); + } + + // Handle NULL literal + if (strcasecmp($default, 'NULL') === 0) { + return null; + } + + // Handle string literals - remove quotes and unescape + if (preg_match("/^'(.*)'$/s", $default, $matches)) { + return str_replace("''", "'", $matches[1]); + } + + return $default; + } + /** * Begin Transaction */ @@ -440,6 +483,10 @@ public function error(): array */ public function affectedRows(): int { + if ($this->resultID === false) { + return 0; + } + return sqlsrv_rows_affected($this->resultID); } @@ -544,11 +591,15 @@ public function getVersion(): string return $this->dataCache['version']; } - if (! $this->connID || ($info = sqlsrv_server_info($this->connID)) === []) { + if (! $this->connID) { $this->initialize(); } - return isset($info['SQLServerVersion']) ? $this->dataCache['version'] = $info['SQLServerVersion'] : false; + if (($info = sqlsrv_server_info($this->connID)) === []) { + return ''; + } + + return isset($info['SQLServerVersion']) ? $this->dataCache['version'] = $info['SQLServerVersion'] : ''; } /** diff --git a/system/Database/SQLSRV/Forge.php b/system/Database/SQLSRV/Forge.php index d121560c9d47..b64c25a05100 100644 --- a/system/Database/SQLSRV/Forge.php +++ b/system/Database/SQLSRV/Forge.php @@ -134,12 +134,12 @@ public function createDatabase(string $dbName, bool $ifNotExists = false): bool $sql = sprintf( $this->createDatabaseIfStr, $dbName, - $this->db->escapeIdentifier($dbName) + $this->db->escapeIdentifier($dbName), ); } else { $sql = sprintf( $this->createDatabaseStr, - $this->db->escapeIdentifier($dbName) + $this->db->escapeIdentifier($dbName), ); } @@ -180,8 +180,7 @@ protected function _createTableAttributes(array $attributes): string * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return false|list|string SQL string or false - * @phpstan-return ($alterType is 'DROP' ? string : list|false) + * @return ($alterType is 'DROP' ? string : false|list) */ protected function _alterTable(string $alterType, string $table, $processedFields) { @@ -225,7 +224,7 @@ protected function _alterTable(string $alterType, string $table, $processedField $sql = 'ALTER TABLE ' . $fullTable . ' DROP '; - $fields = array_map(static fn ($item) => 'COLUMN [' . trim($item) . ']', (array) $columnNamesToDrop); + $fields = array_map(static fn ($item): string => 'COLUMN [' . trim($item) . ']', (array) $columnNamesToDrop); return $sql . implode(',', $fields); } @@ -254,8 +253,27 @@ protected function _alterTable(string $alterType, string $table, $processedField } if (! empty($field['default'])) { - $sqls[] = $sql . ' ALTER COLUMN ADD CONSTRAINT ' . $this->db->escapeIdentifiers($field['name']) . '_def' - . " DEFAULT {$field['default']} FOR " . $this->db->escapeIdentifiers($field['name']); + $fullTable = $this->db->escapeIdentifiers($this->db->schema) . '.' . $this->db->escapeIdentifiers($table); + $colName = $field['name']; // bare, for sys.columns lookup + + // find the existing default constraint name for this column + $findSql = <<db->query($findSql)->getRowArray(); + if (isset($toDrop['constraint_name']) && $toDrop['constraint_name'] !== '') { + $sqls[] = $sql . ' DROP CONSTRAINT ' . $this->db->escapeIdentifiers($toDrop['constraint_name']); + } + + $sqls[] = $sql . ' ADD CONSTRAINT ' . $this->db->escapeIdentifiers($field['name'] . '_def') + . "{$field['default']} FOR " . $this->db->escapeIdentifiers($field['name']); } $nullable = true; // Nullable by default. @@ -360,7 +378,7 @@ protected function _processColumn(array $processedField): string protected function _attributeType(array &$attributes) { // Reset field lengths for data types that don't support it - if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== false) { + if (isset($attributes['CONSTRAINT']) && str_contains(strtolower($attributes['TYPE']), 'int')) { $attributes['CONSTRAINT'] = null; } @@ -380,9 +398,9 @@ protected function _attributeType(array &$attributes) // https://learn.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-ver16#remarks $maxLength = max( array_map( - static fn ($value) => strlen($value), - $attributes['CONSTRAINT'] - ) + strlen(...), + $attributes['CONSTRAINT'], + ), ); $attributes['TYPE'] = 'VARCHAR'; @@ -397,6 +415,11 @@ protected function _attributeType(array &$attributes) $attributes['TYPE'] = 'BIT'; break; + case 'BLOB': + $attributes['TYPE'] = 'VARBINARY'; + $attributes['CONSTRAINT'] ??= 'MAX'; + break; + default: break; } @@ -407,7 +430,7 @@ protected function _attributeType(array &$attributes) */ protected function _attributeAutoIncrement(array &$attributes, array &$field) { - if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true && stripos($field['type'], 'INT') !== false) { + if (! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true && str_contains(strtolower($field['type']), strtolower('INT'))) { $field['auto_increment'] = ' IDENTITY(1,1)'; } } diff --git a/system/Database/SQLSRV/PreparedQuery.php b/system/Database/SQLSRV/PreparedQuery.php index f3a4a14c2bc6..19d2d5adfe6b 100644 --- a/system/Database/SQLSRV/PreparedQuery.php +++ b/system/Database/SQLSRV/PreparedQuery.php @@ -13,9 +13,9 @@ namespace CodeIgniter\Database\SQLSRV; -use BadMethodCallException; use CodeIgniter\Database\BasePreparedQuery; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Exceptions\BadMethodCallException; /** * Prepared query for Postgre @@ -59,7 +59,7 @@ public function _prepare(string $sql, array $options = []): PreparedQuery // Prepare parameters for the query $queryString = $this->getQueryString(); - $parameters = $this->parameterize($queryString); + $parameters = $this->parameterize($queryString, $options); // Prepare the query $this->statement = sqlsrv_prepare($this->db->connID, $sql, $parameters); @@ -120,8 +120,10 @@ protected function _close(): bool /** * Handle parameters. + * + * @param array $options */ - protected function parameterize(string $queryString): array + protected function parameterize(string $queryString, array $options): array { $numberOfVariables = substr_count($queryString, '?'); @@ -129,7 +131,11 @@ protected function parameterize(string $queryString): array for ($c = 0; $c < $numberOfVariables; $c++) { $this->parameters[$c] = null; - $params[] = &$this->parameters[$c]; + if (isset($options[$c])) { + $params[] = [&$this->parameters[$c], SQLSRV_PARAM_IN, $options[$c]]; + } else { + $params[] = &$this->parameters[$c]; + } } return $params; diff --git a/system/Database/SQLite3/Builder.php b/system/Database/SQLite3/Builder.php index 15fc2529aa0d..4f8dff97a0ea 100644 --- a/system/Database/SQLite3/Builder.php +++ b/system/Database/SQLite3/Builder.php @@ -16,7 +16,7 @@ use CodeIgniter\Database\BaseBuilder; use CodeIgniter\Database\Exceptions\DatabaseException; use CodeIgniter\Database\RawSql; -use InvalidArgumentException; +use CodeIgniter\Exceptions\InvalidArgumentException; /** * Builder for SQLite3 @@ -49,7 +49,7 @@ class Builder extends BaseBuilder ]; /** - * @var array + * @var array */ protected $supportedIgnoreStatements = [ 'insert' => 'OR IGNORE', @@ -143,7 +143,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $constraints = $this->QBOptions['constraints'] ?? []; if (empty($constraints)) { - $fieldNames = array_map(static fn ($columnName) => trim($columnName, '`'), $keys); + $fieldNames = array_map(static fn ($columnName): string => trim($columnName, '`'), $keys); $allIndexes = array_filter($this->db->getIndexData($table), static function ($index) use ($fieldNames): bool { $hasAllFields = count(array_intersect($index->fields, $fieldNames)) === count($index->fields); @@ -151,8 +151,8 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri return ($index->type === 'PRIMARY' || $index->type === 'UNIQUE') && $hasAllFields; }); - foreach (array_map(static fn ($index) => $index->fields, $allIndexes) as $index) { - $constraints[] = current($index); + foreach ($allIndexes as $index) { + $constraints = $index->fields; break; } @@ -179,7 +179,7 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql = 'INSERT INTO ' . $table . ' ('; - $sql .= implode(', ', array_map(static fn ($columnName) => $columnName, $keys)); + $sql .= implode(', ', array_map(static fn ($columnName): string => $columnName, $keys)); $sql .= ")\n"; @@ -192,12 +192,12 @@ protected function _upsertBatch(string $table, array $keys, array $values): stri $sql .= implode( ",\n", array_map( - static fn ($key, $value) => $key . ($value instanceof RawSql ? + static fn ($key, $value): string => $key . ($value instanceof RawSql ? " = {$value}" : " = {$alias}.{$value}"), array_keys($updateFields), - $updateFields - ) + $updateFields, + ), ); $this->QBOptions['sql'] = $sql; @@ -265,13 +265,13 @@ protected function _deleteBatch(string $table, array $keys, array $values): stri $data = implode( " UNION ALL\n", array_map( - static fn ($value) => 'SELECT ' . implode(', ', array_map( - static fn ($key, $index) => $index . ' ' . $key, + static fn ($value): string => 'SELECT ' . implode(', ', array_map( + static fn ($key, $index): string => $index . ' ' . $key, $keys, - $value + $value, )), - $values - ) + $values, + ), ) . "\n"; } diff --git a/system/Database/SQLite3/Connection.php b/system/Database/SQLite3/Connection.php index a1a03eff61f5..ec73a75b18bd 100644 --- a/system/Database/SQLite3/Connection.php +++ b/system/Database/SQLite3/Connection.php @@ -15,6 +15,8 @@ use CodeIgniter\Database\BaseConnection; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Database\TableName; +use CodeIgniter\Exceptions\InvalidArgumentException; use Exception; use SQLite3; use SQLite3Result; @@ -55,6 +57,15 @@ class Connection extends BaseConnection */ protected $busyTimeout; + /** + * The setting of the "synchronous" flag + * + * @var int<0, 3>|null flag + * + * @see https://www.sqlite.org/pragma.html#pragma_synchronous + */ + protected ?int $synchronous = null; + /** * @return void */ @@ -69,6 +80,13 @@ public function initialize() if (is_int($this->busyTimeout)) { $this->connID->busyTimeout($this->busyTimeout); } + + if (is_int($this->synchronous)) { + if (! in_array($this->synchronous, [0, 1, 2, 3], true)) { + throw new InvalidArgumentException('Invalid synchronous value.'); + } + $this->connID->exec('PRAGMA synchronous = ' . $this->synchronous); + } } /** @@ -89,7 +107,7 @@ public function connect(bool $persistent = false) $this->database = WRITEPATH . $this->database; } - $sqlite = (! $this->password) + $sqlite = ($this->password === null || $this->password === '') ? new SQLite3($this->database) : new SQLite3($this->database, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, $this->password); @@ -194,7 +212,7 @@ protected function _escapeString(string $str): string */ protected function _listTables(bool $prefixLimit = false, ?string $tableName = null): string { - if ($tableName !== null) { + if ((string) $tableName !== '') { return 'SELECT "NAME" FROM "SQLITE_MASTER" WHERE "TYPE" = \'table\'' . ' AND "NAME" NOT LIKE \'sqlite!_%\' ESCAPE \'!\'' . ' AND "NAME" LIKE ' . $this->escape($tableName); @@ -209,19 +227,31 @@ protected function _listTables(bool $prefixLimit = false, ?string $tableName = n /** * Generates a platform-specific query string so that the column names can be fetched. + * + * @param string|TableName $table */ - protected function _listColumns(string $table = ''): string + protected function _listColumns($table = ''): string { - return 'PRAGMA TABLE_INFO(' . $this->protectIdentifiers($table, true, null, false) . ')'; + if ($table instanceof TableName) { + $tableName = $this->escapeIdentifier($table); + } else { + $tableName = $this->protectIdentifiers($table, true, null, false); + } + + return 'PRAGMA TABLE_INFO(' . $tableName . ')'; } /** + * @param string|TableName $tableName + * * @return false|list * * @throws DatabaseException */ - public function getFieldNames(string $table) + public function getFieldNames($tableName) { + $table = ($tableName instanceof TableName) ? $tableName->getTableName() : $tableName; + // Is there a cached result? if (isset($this->dataCache['field_names'][$table])) { return $this->dataCache['field_names'][$table]; @@ -231,7 +261,7 @@ public function getFieldNames(string $table) $this->initialize(); } - $sql = $this->_listColumns($table); + $sql = $this->_listColumns($tableName); $query = $this->query($sql); $this->dataCache['field_names'][$table] = []; diff --git a/system/Database/SQLite3/Forge.php b/system/Database/SQLite3/Forge.php index 48e9abcc425c..2bb9386f6c9e 100644 --- a/system/Database/SQLite3/Forge.php +++ b/system/Database/SQLite3/Forge.php @@ -110,28 +110,40 @@ public function dropDatabase(string $dbName): bool return true; } + /** + * @param list|string $columnNames + * + * @throws DatabaseException + */ + public function dropColumn(string $table, $columnNames): bool + { + $columns = is_array($columnNames) ? $columnNames : array_map(trim(...), explode(',', $columnNames)); + $result = (new Table($this->db, $this)) + ->fromTable($this->db->DBPrefix . $table) + ->dropColumn($columns) + ->run(); + + if (! $result && $this->db->DBDebug) { + throw new DatabaseException(sprintf( + 'Failed to drop column%s "%s" on "%s" table.', + count($columns) > 1 ? 's' : '', + implode('", "', $columns), + $table, + )); + } + + return $result; + } + /** * @param array|string $processedFields Processed column definitions * or column names to DROP * - * @return array|string|null - * @return list|string|null SQL string or null - * @phpstan-return ($alterType is 'DROP' ? string : list|null) + * @return ($alterType is 'DROP' ? string : list|null) */ protected function _alterTable(string $alterType, string $table, $processedFields) { switch ($alterType) { - case 'DROP': - $columnNamesToDrop = $processedFields; - - $sqlTable = new Table($this->db, $this); - - $sqlTable->fromTable($table) - ->dropColumn($columnNamesToDrop) - ->run(); - - return ''; // Why empty string? - case 'CHANGE': $fieldsToModify = []; @@ -212,7 +224,7 @@ protected function _attributeAutoIncrement(array &$attributes, array &$field) if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === true - && stripos($field['type'], 'int') !== false + && str_contains(strtolower($field['type']), 'int') ) { $field['type'] = 'INTEGER PRIMARY KEY'; $field['default'] = ''; diff --git a/system/Database/SQLite3/PreparedQuery.php b/system/Database/SQLite3/PreparedQuery.php index 21dc4c2fdeff..afd2669c6436 100644 --- a/system/Database/SQLite3/PreparedQuery.php +++ b/system/Database/SQLite3/PreparedQuery.php @@ -13,9 +13,9 @@ namespace CodeIgniter\Database\SQLite3; -use BadMethodCallException; use CodeIgniter\Database\BasePreparedQuery; use CodeIgniter\Database\Exceptions\DatabaseException; +use CodeIgniter\Exceptions\BadMethodCallException; use Exception; use SQLite3; use SQLite3Result; @@ -75,6 +75,8 @@ public function _execute(array $data): bool $bindType = SQLITE3_INTEGER; } elseif (is_float($item)) { $bindType = SQLITE3_FLOAT; + } elseif (is_string($item) && $this->isBinary($item)) { + $bindType = SQLITE3_BLOB; } else { $bindType = SQLITE3_TEXT; } diff --git a/system/Database/SQLite3/Table.php b/system/Database/SQLite3/Table.php index 5db002a1060b..ea84e0011e3f 100644 --- a/system/Database/SQLite3/Table.php +++ b/system/Database/SQLite3/Table.php @@ -17,8 +17,6 @@ use stdClass; /** - * Class Table - * * Provides missing features for altering tables that are common * in other supported databases, but are missing from SQLite. * These are needed in order to support migrations during testing @@ -113,7 +111,7 @@ public function fromTable(string $table) $this->keys = array_merge($this->keys, $this->formatKeys($this->db->getIndexData($table))); // if primary key index exists twice then remove psuedo index name 'primary'. - $primaryIndexes = array_filter($this->keys, static fn ($index) => $index['type'] === 'primary'); + $primaryIndexes = array_filter($this->keys, static fn ($index): bool => $index['type'] === 'primary'); if ($primaryIndexes !== [] && count($primaryIndexes) > 1 && array_key_exists('primary', $this->keys)) { unset($this->keys['primary']); @@ -202,7 +200,7 @@ public function modifyColumn(array $fieldsToModify) */ public function dropPrimaryKey(): Table { - $primaryIndexes = array_filter($this->keys, static fn ($index) => strtolower($index['type']) === 'primary'); + $primaryIndexes = array_filter($this->keys, static fn ($index): bool => strtolower($index['type']) === 'primary'); foreach (array_keys($primaryIndexes) as $key) { unset($this->keys[$key]); @@ -235,7 +233,7 @@ public function dropForeignKey(string $foreignName) */ public function addPrimaryKey(array $fields): Table { - $primaryIndexes = array_filter($this->keys, static fn ($index) => strtolower($index['type']) === 'primary'); + $primaryIndexes = array_filter($this->keys, static fn ($index): bool => strtolower($index['type']) === 'primary'); // if primary key already exists we can't add another one if ($primaryIndexes !== []) { @@ -308,7 +306,7 @@ protected function createTable() $this->keys = array_filter( $this->keys, - static fn ($index) => count(array_intersect($index['fields'], $fieldNames)) === count($index['fields']) + static fn ($index): bool => count(array_intersect($index['fields'], $fieldNames)) === count($index['fields']), ); // Unique/Index keys @@ -334,7 +332,7 @@ protected function createTable() $this->forge->addForeignKey( $foreignKey->column_name, trim($foreignKey->foreign_table_name, $this->db->DBPrefix), - $foreignKey->foreign_column_name + $foreignKey->foreign_column_name, ); } @@ -345,6 +343,8 @@ protected function createTable() * Copies data from our old table to the new one, * taking care map data correctly based on any columns * that have been renamed. + * + * @return void */ protected function copyData() { @@ -358,15 +358,15 @@ protected function copyData() $exFields = implode( ', ', - array_map(fn ($item) => $this->db->protectIdentifiers($item), $exFields) + array_map(fn ($item) => $this->db->protectIdentifiers($item), $exFields), ); $newFields = implode( ', ', - array_map(fn ($item) => $this->db->protectIdentifiers($item), $newFields) + array_map(fn ($item) => $this->db->protectIdentifiers($item), $newFields), ); $this->db->query( - "INSERT INTO {$this->prefixedTableName}({$newFields}) SELECT {$exFields} FROM {$this->db->DBPrefix}temp_{$this->tableName}" + "INSERT INTO {$this->prefixedTableName}({$newFields}) SELECT {$exFields} FROM {$this->db->DBPrefix}temp_{$this->tableName}", ); } @@ -376,8 +376,7 @@ protected function copyData() * * @param array|bool $fields * - * @return mixed - * @phpstan-return ($fields is array ? array : mixed) + * @return ($fields is array ? array : mixed) */ protected function formatFields($fields) { @@ -472,6 +471,8 @@ protected function formatKeys($keys) /** * Attempts to drop all indexes and constraints * from the database for this table. + * + * @return void */ protected function dropIndexes() { diff --git a/system/Database/Seeder.php b/system/Database/Seeder.php index c70a34b45e9f..aacc8e9905ce 100644 --- a/system/Database/Seeder.php +++ b/system/Database/Seeder.php @@ -14,10 +14,10 @@ namespace CodeIgniter\Database; use CodeIgniter\CLI\CLI; +use CodeIgniter\Exceptions\InvalidArgumentException; use Config\Database; use Faker\Factory; use Faker\Generator; -use InvalidArgumentException; /** * Class Seeder @@ -115,6 +115,8 @@ public static function faker(): ?Generator /** * Loads the specified seeder and runs it. * + * @return void + * * @throws InvalidArgumentException */ public function call(string $class) diff --git a/system/Database/TableName.php b/system/Database/TableName.php new file mode 100644 index 000000000000..a34ac57aa1d2 --- /dev/null +++ b/system/Database/TableName.php @@ -0,0 +1,135 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace CodeIgniter\Database; + +/** + * Represents a table name in SQL. + * + * @interal + * + * @see \CodeIgniter\Database\TableNameTest + */ +class TableName +{ + /** + * @param string $actualTable Actual table name + * @param string $logicalTable Logical table name (w/o DB prefix) + * @param string $schema Schema name + * @param string $database Database name + * @param string $alias Alias name + */ + protected function __construct( + private readonly string $actualTable, + private readonly string $logicalTable = '', + private readonly string $schema = '', + private readonly string $database = '', + private readonly string $alias = '', + ) { + } + + /** + * Creates a new instance. + * + * @param string $table Table name (w/o DB prefix) + * @param string $alias Alias name + */ + public static function create(string $dbPrefix, string $table, string $alias = ''): self + { + return new self( + $dbPrefix . $table, + $table, + '', + '', + $alias, + ); + } + + /** + * Creates a new instance from an actual table name. + * + * @param string $actualTable Actual table name with DB prefix + * @param string $alias Alias name + */ + public static function fromActualName(string $dbPrefix, string $actualTable, string $alias = ''): self + { + $prefix = $dbPrefix; + $logicalTable = ''; + + if (str_starts_with($actualTable, $prefix)) { + $logicalTable = substr($actualTable, strlen($prefix)); + } + + return new self( + $actualTable, + $logicalTable, + '', + $alias, + ); + } + + /** + * Creates a new instance from full name. + * + * @param string $table Table name (w/o DB prefix) + * @param string $schema Schema name + * @param string $database Database name + * @param string $alias Alias name + */ + public static function fromFullName( + string $dbPrefix, + string $table, + string $schema = '', + string $database = '', + string $alias = '', + ): self { + return new self( + $dbPrefix . $table, + $table, + $schema, + $database, + $alias, + ); + } + + /** + * Returns the single segment table name w/o DB prefix. + */ + public function getTableName(): string + { + return $this->logicalTable; + } + + /** + * Returns the actual single segment table name w/z DB prefix. + */ + public function getActualTableName(): string + { + return $this->actualTable; + } + + public function getAlias(): string + { + return $this->alias; + } + + public function getSchema(): string + { + return $this->schema; + } + + public function getDatabase(): string + { + return $this->database; + } +} diff --git a/system/Debug/BaseExceptionHandler.php b/system/Debug/BaseExceptionHandler.php index 4305265d2d2c..b9180a98bd59 100644 --- a/system/Debug/BaseExceptionHandler.php +++ b/system/Debug/BaseExceptionHandler.php @@ -13,6 +13,8 @@ namespace CodeIgniter\Debug; +use CodeIgniter\HTTP\CLIRequest; +use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Config\Exceptions as ExceptionsConfig; @@ -54,6 +56,8 @@ public function __construct(ExceptionsConfig $config) /** * The main entry point into the handler. * + * @param CLIRequest|IncomingRequest $request + * * @return void */ abstract public function handle( @@ -61,7 +65,7 @@ abstract public function handle( RequestInterface $request, ResponseInterface $response, int $statusCode, - int $exitCode + int $exitCode, ); /** @@ -221,7 +225,7 @@ protected static function highlightFile(string $file, int $lineNumber, int $line "{$format} %s\n%s", $n + $start + 1, strip_tags($row), - implode('', $tags[0]) + implode('', $tags[0]), ); } else { $out .= sprintf('' . $format . ' %s', $n + $start + 1, $row) . "\n"; diff --git a/system/Debug/ExceptionHandler.php b/system/Debug/ExceptionHandler.php index d6f97b76a32b..805b5691c079 100644 --- a/system/Debug/ExceptionHandler.php +++ b/system/Debug/ExceptionHandler.php @@ -13,8 +13,10 @@ namespace CodeIgniter\Debug; +use Closure; use CodeIgniter\API\ResponseTrait; use CodeIgniter\Exceptions\PageNotFoundException; +use CodeIgniter\HTTP\CLIRequest; use CodeIgniter\HTTP\Exceptions\HTTPException; use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; @@ -41,13 +43,15 @@ final class ExceptionHandler extends BaseExceptionHandler implements ExceptionHa /** * Determines the correct way to display the error. + * + * @param CLIRequest|IncomingRequest $request */ public function handle( Throwable $exception, RequestInterface $request, ResponseInterface $response, int $statusCode, - int $exitCode + int $exitCode, ): void { // ResponseTrait needs these properties. $this->request = $request; @@ -68,18 +72,26 @@ public function handle( 'HTTP/%s %s %s', $request->getProtocolVersion(), $response->getStatusCode(), - $response->getReasonPhrase() + $response->getReasonPhrase(), ), true, - $statusCode + $statusCode, ); } + // Handles non-HTML requests. if (! str_contains($request->getHeaderLine('accept'), 'text/html')) { - $data = (ENVIRONMENT === 'development' || ENVIRONMENT === 'testing') + // If display_errors is enabled, shows the error details. + $data = $this->isDisplayErrorsEnabled() ? $this->collectVars($exception, $statusCode) : ''; + // Sanitize data to remove non-JSON-serializable values (resources, closures) + // before formatting for API responses (JSON, XML, etc.) + if ($data !== '') { + $data = $this->sanitizeData($data); + } + $this->respond($data, $statusCode)->send(); if (ENVIRONMENT !== 'testing') { @@ -129,18 +141,13 @@ public function handle( protected function determineView( Throwable $exception, string $templatePath, - int $statusCode = 500 + int $statusCode = 500, ): string { // Production environments should have a custom exception file. $view = 'production.php'; - if ( - in_array( - strtolower(ini_get('display_errors')), - ['1', 'true', 'on', 'yes'], - true - ) - ) { + if ($this->isDisplayErrorsEnabled()) { + // If display_errors is enabled, shows the error details. $view = 'error_exception.php'; } @@ -158,4 +165,62 @@ protected function determineView( return $view; } + + private function isDisplayErrorsEnabled(): bool + { + return in_array( + strtolower(ini_get('display_errors')), + ['1', 'true', 'on', 'yes'], + true, + ); + } + + /** + * Sanitizes data to remove non-JSON-serializable values like resources and closures. + * This is necessary for API responses that need to be JSON/XML encoded. + * + * @param array $seen Used internally to prevent infinite recursion + */ + private function sanitizeData(mixed $data, array &$seen = []): mixed + { + $type = gettype($data); + + switch ($type) { + case 'resource': + case 'resource (closed)': + return '[Resource #' . (int) $data . ']'; + + case 'array': + $result = []; + + foreach ($data as $key => $value) { + $result[$key] = $this->sanitizeData($value, $seen); + } + + return $result; + + case 'object': + $oid = spl_object_id($data); + if (isset($seen[$oid])) { + return '[' . $data::class . ' Object *RECURSION*]'; + } + $seen[$oid] = true; + + if ($data instanceof Closure) { + return '[Closure]'; + } + + $result = []; + + foreach ((array) $data as $key => $value) { + $cleanKey = preg_replace('/^\x00.*\x00/', '', (string) $key); + $result[$cleanKey] = $this->sanitizeData($value, $seen); + } + + return $result; + + default: + return $data; + } + } } diff --git a/system/Debug/ExceptionHandlerInterface.php b/system/Debug/ExceptionHandlerInterface.php index d0379e2abd63..7f91b3c5152d 100644 --- a/system/Debug/ExceptionHandlerInterface.php +++ b/system/Debug/ExceptionHandlerInterface.php @@ -13,6 +13,8 @@ namespace CodeIgniter\Debug; +use CodeIgniter\HTTP\CLIRequest; +use CodeIgniter\HTTP\IncomingRequest; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Throwable; @@ -21,12 +23,14 @@ interface ExceptionHandlerInterface { /** * Determines the correct way to display the error. + * + * @param CLIRequest|IncomingRequest $request */ public function handle( Throwable $exception, RequestInterface $request, ResponseInterface $response, int $statusCode, - int $exitCode + int $exitCode, ): void; } diff --git a/system/Debug/Exceptions.php b/system/Debug/Exceptions.php index aa353732c197..1a0293372953 100644 --- a/system/Debug/Exceptions.php +++ b/system/Debug/Exceptions.php @@ -164,7 +164,7 @@ public function exceptionHandler(Throwable $exception) $this->request, $this->response, $statusCode, - $exitCode + $exitCode, ); return; @@ -208,6 +208,14 @@ public function exceptionHandler(Throwable $exception) public function errorHandler(int $severity, string $message, ?string $file = null, ?int $line = null) { if ($this->isDeprecationError($severity)) { + if ($this->isSessionSidDeprecationError($message, $file, $line)) { + return true; + } + + if ($this->isImplicitNullableDeprecationError($message, $file, $line)) { + return true; + } + if (! $this->config->logDeprecations || (bool) env('CODEIGNITER_SCREAM_DEPRECATIONS')) { throw new ErrorException($message, 0, $severity, $file, $line); } @@ -222,6 +230,64 @@ public function errorHandler(int $severity, string $message, ?string $file = nul return false; // return false to propagate the error to PHP standard error handler } + /** + * Handles session.sid_length and session.sid_bits_per_character deprecations + * in PHP 8.4. + */ + private function isSessionSidDeprecationError(string $message, ?string $file = null, ?int $line = null): bool + { + if ( + PHP_VERSION_ID >= 80400 + && str_contains($message, 'session.sid_') + ) { + log_message( + LogLevel::WARNING, + '[DEPRECATED] {message} in {errFile} on line {errLine}.', + [ + 'message' => $message, + 'errFile' => clean_path($file ?? ''), + 'errLine' => $line ?? 0, + ], + ); + + return true; + } + + return false; + } + + /** + * Workaround to implicit nullable deprecation errors in PHP 8.4. + * + * "Implicitly marking parameter $xxx as nullable is deprecated, + * the explicit nullable type must be used instead" + * + * @TODO remove this before v4.6.0 release + */ + private function isImplicitNullableDeprecationError(string $message, ?string $file = null, ?int $line = null): bool + { + if ( + PHP_VERSION_ID >= 80400 + && str_contains($message, 'the explicit nullable type must be used instead') + // Only Kint and Faker, which cause this error, are logged. + && (str_starts_with($message, 'Kint\\') || str_starts_with($message, 'Faker\\')) + ) { + log_message( + LogLevel::WARNING, + '[DEPRECATED] {message} in {errFile} on line {errLine}.', + [ + 'message' => $message, + 'errFile' => clean_path($file ?? ''), + 'errLine' => $line ?? 0, + ], + ); + + return true; + } + + return false; + } + /** * Checks to see if any errors have happened during shutdown that * need to be caught and handle them. @@ -270,7 +336,7 @@ protected function determineView(Throwable $exception, string $templatePath): st in_array( strtolower(ini_get('display_errors')), ['1', 'true', 'on', 'yes'], - true + true, ) ) { $view = 'error_exception.php'; @@ -462,7 +528,7 @@ private function handleDeprecationError(string $message, ?string $file = null, ? 'errFile' => clean_path($file ?? ''), 'errLine' => $line ?? 0, 'trace' => self::renderBacktrace($trace), - ] + ], ); return true; @@ -567,7 +633,7 @@ public static function highlightFile(string $file, int $lineNumber, int $lines = "{$format} %s\n%s", $n + $start + 1, strip_tags($row), - implode('', $tags[0]) + implode('', $tags[0]), ); } else { $out .= sprintf('' . $format . ' %s', $n + $start + 1, $row) . "\n"; @@ -611,7 +677,7 @@ private static function renderBacktrace(array $backtrace): string $frame['class'], $frame['type'], $frame['function'], - $args + $args, ); } diff --git a/system/Debug/Timer.php b/system/Debug/Timer.php index 0f2abdbea509..98b1299a89f7 100644 --- a/system/Debug/Timer.php +++ b/system/Debug/Timer.php @@ -13,7 +13,7 @@ namespace CodeIgniter\Debug; -use RuntimeException; +use CodeIgniter\Exceptions\RuntimeException; /** * Class Timer @@ -46,7 +46,7 @@ class Timer public function start(string $name, ?float $time = null) { $this->timers[strtolower($name)] = [ - 'start' => ! empty($time) ? $time : microtime(true), + 'start' => empty($time) ? microtime(true) : $time, 'end' => null, ]; diff --git a/system/Debug/Toolbar.php b/system/Debug/Toolbar.php index b939e208fd21..1a3ec63c9704 100644 --- a/system/Debug/Toolbar.php +++ b/system/Debug/Toolbar.php @@ -58,7 +58,7 @@ public function __construct(ToolbarConfig $config) log_message( 'critical', 'Toolbar collector does not exist (' . $collector . ').' - . ' Please check $collectors in the app/Config/Toolbar.php file.' + . ' Please check $collectors in the app/Config/Toolbar.php file.', ); continue; @@ -391,13 +391,13 @@ public function prepare(?RequestInterface $request = null, ?ResponseInterface $r $stats['startTime'], $stats['totalTime'], $request, - $response + $response, ); helper('filesystem'); // Updated to microtime() so we can get history - $time = sprintf('%.6f', Time::now()->format('U.u')); + $time = sprintf('%.6F', Time::now()->format('U.u')); if (! is_dir(WRITEPATH . 'debugbar')) { mkdir(WRITEPATH . 'debugbar', 0777); @@ -439,8 +439,8 @@ public function prepare(?RequestInterface $request = null, ?ResponseInterface $r '//', '' . $script, $response->getBody(), - 1 - ) + 1, + ), ); return; @@ -512,11 +512,11 @@ protected function format(string $data, string $format = 'html'): string { $data = json_decode($data, true); - if ($this->config->maxHistory !== 0 && preg_match('/\d+\.\d{6}/s', (string) service('request')->getGet('debugbar_time'), $debugbarTime)) { + if (preg_match('/\d+\.\d{6}/s', (string) service('request')->getGet('debugbar_time'), $debugbarTime)) { $history = new History(); $history->setFiles( $debugbarTime[0], - $this->config->maxHistory + $this->config->maxHistory, ); $data['collectors'][] = $history->getAsArray(); diff --git a/system/Debug/Toolbar/Collectors/Database.php b/system/Debug/Toolbar/Collectors/Database.php index 1a923a35516b..be57931b30f9 100644 --- a/system/Debug/Toolbar/Collectors/Database.php +++ b/system/Debug/Toolbar/Collectors/Database.php @@ -104,7 +104,7 @@ public static function collect(Query $query) static::$queries[] = [ 'query' => $query, 'string' => $queryString, - 'duplicate' => in_array($queryString, array_column(static::$queries, 'string', null), true), + 'duplicate' => in_array($queryString, array_column(static::$queries, 'string'), true), 'trace' => $backtrace, ]; } @@ -147,8 +147,7 @@ protected function formatTimelineData(): array */ public function display(): array { - $data = []; - $data['queries'] = array_map(static function (array $query): array { + return ['queries' => array_map(static function (array $query): array { $isDuplicate = $query['duplicate'] === true; $firstNonSystemLine = ''; @@ -195,9 +194,7 @@ public function display(): array 'trace-file' => $firstNonSystemLine, 'qid' => md5($query['query'] . Time::now()->format('0.u00 U')), ]; - }, static::$queries); - - return $data; + }, static::$queries)]; } /** @@ -218,7 +215,7 @@ public function getTitleDetails(): string $this->getConnections(); $queryCount = count(static::$queries); - $uniqueCount = count(array_filter(static::$queries, static fn ($query) => $query['duplicate'] === false)); + $uniqueCount = count(array_filter(static::$queries, static fn ($query): bool => $query['duplicate'] === false)); $connectionCount = count($this->connections); return sprintf( @@ -228,7 +225,7 @@ public function getTitleDetails(): string $uniqueCount, $uniqueCount > 1 ? 'of them' : '', $connectionCount, - $connectionCount > 1 ? 's' : '' + $connectionCount > 1 ? 's' : '', ); } diff --git a/system/Debug/Toolbar/Collectors/History.php b/system/Debug/Toolbar/Collectors/History.php index 4e5276b55b4e..583b350cb4b6 100644 --- a/system/Debug/Toolbar/Collectors/History.php +++ b/system/Debug/Toolbar/Collectors/History.php @@ -90,7 +90,7 @@ public function setFiles(string $current, int $limit = 20) $contents = @json_decode($contents); if (json_last_error() === JSON_ERROR_NONE) { preg_match('/debugbar_(.*)\.json$/s', $filename, $time); - $time = sprintf('%.6f', $time[1] ?? 0); + $time = sprintf('%.6F', $time[1] ?? 0); // Debugbar files shown in History Collector $files[] = [ diff --git a/system/Debug/Toolbar/Collectors/Logs.php b/system/Debug/Toolbar/Collectors/Logs.php index f36dfb1d12b5..f9fdabecbff1 100644 --- a/system/Debug/Toolbar/Collectors/Logs.php +++ b/system/Debug/Toolbar/Collectors/Logs.php @@ -45,12 +45,14 @@ class Logs extends BaseCollector /** * Our collected data. * - * @var array + * @var list */ - protected $data; + protected $data = []; /** - * Returns the data of this collector to be formatted in the toolbar + * Returns the data of this collector to be formatted in the toolbar. + * + * @return array{logs: list} */ public function display(): array { @@ -66,7 +68,7 @@ public function isEmpty(): bool { $this->collectLogs(); - return empty($this->data); + return $this->data === []; } /** @@ -82,14 +84,18 @@ public function icon(): string /** * Ensures the data has been collected. * - * @return array + * @return list */ protected function collectLogs() { - if (! empty($this->data)) { + if ($this->data !== []) { return $this->data; } - return $this->data = service('logger', true)->logCache ?? []; + $cache = service('logger')->logCache; + + $this->data = $cache ?? []; + + return $this->data; } } diff --git a/system/Debug/Toolbar/Collectors/Routes.php b/system/Debug/Toolbar/Collectors/Routes.php index 561399fbf37f..f8005065c57e 100644 --- a/system/Debug/Toolbar/Collectors/Routes.php +++ b/system/Debug/Toolbar/Collectors/Routes.php @@ -51,7 +51,7 @@ class Routes extends BaseCollector * Returns the data of this collector to be formatted in the toolbar * * @return array{ - * matchedRoute: array | default: ' . var_export( $param->isDefaultValueAvailable() ? $param->getDefaultValue() : null, - true + true, ), ]; } diff --git a/system/Debug/Toolbar/Views/toolbar.css b/system/Debug/Toolbar/Views/toolbar.css index b9f13c51ff2e..abf61e9cca93 100644 --- a/system/Debug/Toolbar/Views/toolbar.css +++ b/system/Debug/Toolbar/Views/toolbar.css @@ -332,6 +332,26 @@ display: none !important; } } +@media screen and (max-width: 768px) { + #debug-bar table { + display: block; + overflow-x: auto; + font-size: 12px; + margin: 5px 5px 10px 5px; + } + #debug-bar table td, + #debug-bar table th { + padding: 4px 6px; + } + #debug-bar .timeline { + display: block; + white-space: nowrap; + font-size: 12px; + } + #debug-bar .toolbar { + overflow-x: auto; + } +} #debug-icon { background-color: #FFFFFF; box-shadow: 0 0 4px #DFDFDF; diff --git a/system/Debug/Toolbar/Views/toolbar.js b/system/Debug/Toolbar/Views/toolbar.js index 54fe3d69f106..9e4547b6cb35 100644 --- a/system/Debug/Toolbar/Views/toolbar.js +++ b/system/Debug/Toolbar/Views/toolbar.js @@ -27,22 +27,25 @@ var ciDebugBar = { .getElementById("debug-icon-link") .addEventListener("click", ciDebugBar.toggleToolbar, true); - // Allows to highlight the row of the current history request - var btn = this.toolbar.querySelector( - 'button[data-time="' + localStorage.getItem("debugbar-time") + '"]' - ); - ciDebugBar.addClass(btn.parentNode.parentNode, "current"); - historyLoad = this.toolbar.getElementsByClassName("ci-history-load"); - for (var i = 0; i < historyLoad.length; i++) { - historyLoad[i].addEventListener( - "click", - function () { - loadDoc(this.getAttribute("data-time")); - }, - true + if (historyLoad.length) { + // Allows highlighting the row of the current history request + var btn = this.toolbar.querySelector( + 'button[data-time="' + localStorage.getItem("debugbar-time-new") + '"]' ); + ciDebugBar.addClass(btn.parentNode.parentNode, "current"); + + + for (var i = 0; i < historyLoad.length; i++) { + historyLoad[i].addEventListener( + "click", + function () { + loadDoc(this.getAttribute("data-time")); + }, + true + ); + } } // Display the active Tab on page load @@ -77,14 +80,14 @@ var ciDebugBar = { links[i].addEventListener("click", function() { ciDebugBar.toggleDataTable(datatable) }, true); - + } else if (toggleData === "childrows") { let child = links[i].getAttribute("data-child"); links[i].addEventListener("click", function() { ciDebugBar.toggleChildRows(child) }, true); - + } else { links[i].addEventListener("click", ciDebugBar.toggleRows, true); } @@ -174,10 +177,10 @@ var ciDebugBar = { ); if (target.classList.contains("debug-bar-ndisplay")) { - ciDebugBar.switchClass(target, "debug-bar-ndisplay", "debug-bar-dtableRow"); + ciDebugBar.switchClass(target, "debug-bar-ndisplay", "debug-bar-dtableRow"); } else { ciDebugBar.switchClass(target, "debug-bar-dtableRow", "debug-bar-ndisplay"); - } + } } }, @@ -261,7 +264,7 @@ var ciDebugBar = { } else { ciDebugBar.switchClass(ciDebugBar.icon, "debug-bar-dinlineBlock", "debug-bar-ndisplay"); ciDebugBar.switchClass(ciDebugBar.toolbar, "debug-bar-ndisplay", "debug-bar-dinlineBlock"); - } + } }, toggleViewsHints: function () { @@ -334,6 +337,11 @@ var ciDebugBar = { const OUTER_ELEMENTS = ["HTML", "BODY", "HEAD"]; var getValidElementInner = function (node, reverse) { + // handle null node + if (node === null) { + return null; + } + // handle invalid tags if (OUTER_ELEMENTS.indexOf(node.nodeName) !== -1) { for (var i = 0; i < document.body.children.length; ++i) { @@ -437,7 +445,7 @@ var ciDebugBar = { var debugPath = document.createElement("div"); // path var childArray = startElement[0].parentNode.childNodes; // target child array var parent = startElement[0].parentNode; - var start, end; + let start, end; // setup container debugDiv.classList.add("debug-view"); @@ -782,7 +790,7 @@ var ciDebugBar = { '">' + row.innerText.replace( patt, - '' + '' ) + '' + ""; diff --git a/system/Debug/Toolbar/Views/toolbar.tpl.php b/system/Debug/Toolbar/Views/toolbar.tpl.php index 8179c1a8e631..0768f62915bb 100644 --- a/system/Debug/Toolbar/Views/toolbar.tpl.php +++ b/system/Debug/Toolbar/Views/toolbar.tpl.php @@ -1,21 +1,24 @@ '; + $output .= '