diff --git a/.github/workflows/deploy-distributables.yml b/.github/workflows/deploy-distributables.yml
index f28a62544fa5..7c0b4e4dd1ce 100644
--- a/.github/workflows/deploy-distributables.yml
+++ b/.github/workflows/deploy-distributables.yml
@@ -159,11 +159,15 @@ jobs:
token: ${{ secrets.ACCESS_TOKEN }}
path: userguide
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
- name: Install Sphinx
run: |
- sudo apt install python3-sphinx
- sudo pip3 install sphinxcontrib-phpdomain
- sudo pip3 install sphinx_rtd_theme
+ python -m pip install --upgrade pip
+ pip install -r ./source/user_guide_src/requirements.txt
- name: Chmod
run: chmod +x ./source/.github/scripts/deploy-userguide
diff --git a/.github/workflows/deploy-userguide-latest.yml b/.github/workflows/deploy-userguide-latest.yml
index c131c80cd735..9188672f907a 100644
--- a/.github/workflows/deploy-userguide-latest.yml
+++ b/.github/workflows/deploy-userguide-latest.yml
@@ -33,11 +33,20 @@ jobs:
php-version: '8.1'
coverage: none
- # Build the latest User Guide
- - name: Build with Sphinx
- uses: ammaraskar/sphinx-action@0.4
+ - name: Setup Python
+ uses: actions/setup-python@v5
with:
- docs-folder: user_guide_src/
+ python-version: '3.12'
+
+ - name: Install Sphinx
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r user_guide_src/requirements.txt
+
+ # Build the latest User Guide
+ - name: Build Docs with Sphinx
+ run: make html
+ working-directory: user_guide_src
- name: Add "Edit this page" links
run: |
diff --git a/.github/workflows/reusable-coveralls.yml b/.github/workflows/reusable-coveralls.yml
index af1fd2f5b6c1..b3fcd09484fc 100644
--- a/.github/workflows/reusable-coveralls.yml
+++ b/.github/workflows/reusable-coveralls.yml
@@ -13,6 +13,12 @@ jobs:
runs-on: ubuntu-22.04
steps:
+ - name: Checkout base branch for PR
+ if: github.event_name == 'pull_request'
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/reusable-phpunit-test.yml b/.github/workflows/reusable-phpunit-test.yml
index 84ade1d08862..cf23be58f2bc 100644
--- a/.github/workflows/reusable-phpunit-test.yml
+++ b/.github/workflows/reusable-phpunit-test.yml
@@ -138,7 +138,7 @@ jobs:
steps:
- name: Create database for MSSQL Server
if: ${{ inputs.db-platform == 'SQLSRV' }}
- run: sqlcmd -S 127.0.0.1 -U sa -P 1Secure*Password1 -Q "CREATE DATABASE test"
+ run: sqlcmd -S 127.0.0.1 -U sa -P 1Secure*Password1 -Q "CREATE DATABASE test COLLATE Latin1_General_100_CS_AS_SC_UTF8"
- name: Install latest ImageMagick
if: ${{ contains(inputs.extra-extensions, 'imagick') }}
@@ -148,6 +148,12 @@ 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@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/reusable-serviceless-phpunit-test.yml b/.github/workflows/reusable-serviceless-phpunit-test.yml
index 8a9f00c5e2e6..25080164320b 100644
--- a/.github/workflows/reusable-serviceless-phpunit-test.yml
+++ b/.github/workflows/reusable-serviceless-phpunit-test.yml
@@ -60,6 +60,12 @@ 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@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-autoreview.yml b/.github/workflows/test-autoreview.yml
index 69545ca6af01..10424ff0d4c5 100644
--- a/.github/workflows/test-autoreview.yml
+++ b/.github/workflows/test-autoreview.yml
@@ -35,6 +35,12 @@ 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@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-coding-standards.yml b/.github/workflows/test-coding-standards.yml
index f30475a76dba..a1e2c4770296 100644
--- a/.github/workflows/test-coding-standards.yml
+++ b/.github/workflows/test-coding-standards.yml
@@ -32,6 +32,12 @@ jobs:
- '8.3'
steps:
+ - name: Checkout base branch for PR
+ if: github.event_name == 'pull_request'
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-deptrac.yml b/.github/workflows/test-deptrac.yml
index fecb289b1b63..d96f8f27ef00 100644
--- a/.github/workflows/test-deptrac.yml
+++ b/.github/workflows/test-deptrac.yml
@@ -36,6 +36,12 @@ 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@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-phpstan.yml b/.github/workflows/test-phpstan.yml
index aca331f30481..b5e93d699063 100644
--- a/.github/workflows/test-phpstan.yml
+++ b/.github/workflows/test-phpstan.yml
@@ -45,6 +45,12 @@ jobs:
strategy:
fail-fast: false
steps:
+ - name: Checkout base branch for PR
+ if: github.event_name == 'pull_request'
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-psalm.yml b/.github/workflows/test-psalm.yml
index b1f5891a46d9..ea948ab3bc65 100644
--- a/.github/workflows/test-psalm.yml
+++ b/.github/workflows/test-psalm.yml
@@ -27,6 +27,12 @@ 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@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-rector.yml b/.github/workflows/test-rector.yml
index 286ca76cab42..0835d09edaf0 100644
--- a/.github/workflows/test-rector.yml
+++ b/.github/workflows/test-rector.yml
@@ -47,6 +47,12 @@ jobs:
matrix:
php-versions: ['8.1', '8.3']
steps:
+ - name: Checkout base branch for PR
+ if: github.event_name == 'pull_request'
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.base_ref }}
+
- name: Checkout
uses: actions/checkout@v4
diff --git a/.github/workflows/test-userguide.yml b/.github/workflows/test-userguide.yml
index b127d77dd344..f1e0d0bd60e6 100644
--- a/.github/workflows/test-userguide.yml
+++ b/.github/workflows/test-userguide.yml
@@ -26,10 +26,19 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.12'
+
+ - name: Install Sphinx
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r user_guide_src/requirements.txt
+
- name: Detect usage of tabs in RST files
run: php utils/check_tabs_in_rst.php
- - uses: ammaraskar/sphinx-action@0.4
- with:
- docs-folder: user_guide_src
- build-command: 'make html SPHINXOPTS="-W --keep-going -w /tmp/sphinx-log"'
+ - name: Build Docs with Sphinx
+ run: make html SPHINXOPTS="-W --keep-going -w /tmp/sphinx-log"
+ working-directory: user_guide_src
diff --git a/.php-cs-fixer.tests.php b/.php-cs-fixer.tests.php
index 28a7124909e5..bf37256da58a 100644
--- a/.php-cs-fixer.tests.php
+++ b/.php-cs-fixer.tests.php
@@ -26,6 +26,7 @@
'_support/View/Cells/multiplier.php',
'_support/View/Cells/colors.php',
'_support/View/Cells/addition.php',
+ 'system/Database/Live/PreparedQueryTest.php',
])
->notName('#Foobar.php$#');
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3d9867ef29c4..e423ad54d961 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,62 @@
# Changelog
+## [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/admin/RELEASE.md b/admin/RELEASE.md
index 4f199a821177..9ed91e55c183 100644
--- a/admin/RELEASE.md
+++ b/admin/RELEASE.md
@@ -12,6 +12,9 @@
- `4.y`: The next minor version. (e.g., `4.6`)
- `4.z`: The next next minor version. (e.g., `4.7`)
+> [!NOTE]
+> Copy this file, and replace the versions above with the actual versions.
+
## Merge `develop` branch into next minor version branch `4.y`
Before starting release process, if there are commits in `develop` branch that
@@ -35,6 +38,26 @@ If you release a new minor version.
"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
+
+Work off direct clones of the repos so the release branches persist for a time.
+
+* [ ] Clone both **codeigniter4/CodeIgniter4** and **codeigniter4/userguide** and
+ resolve any necessary PRs
+ ```console
+ rm -rf CodeIgniter4.bk userguide.bk
+ mv CodeIgniter4 CodeIgniter4.bk
+ mv userguide userguide.bk
+ git clone git@github.com:codeigniter4/CodeIgniter4.git
+ git clone git@github.com:codeigniter4/userguide.git
+ ```
+* [ ] Vet the **admin/** folders for any removed hidden files (Action deploy scripts
+ *do not remove these*)
+ ```console
+ cd CodeIgniter4
+ git diff --name-status origin/master admin/
+ ```
+
## Changelog
When generating the changelog each Pull Request to be included must have one of
@@ -65,33 +88,14 @@ the changelog.
Copy the resulting content into **CHANGELOG.md** and adjust the format to match
the existing content.
-## Preparation
-
-Work off direct clones of the repos so the release branches persist for a time.
-
-* [ ] Clone both **codeigniter4/CodeIgniter4** and **codeigniter4/userguide** and
- resolve any necessary PRs
- ```console
- rm -rf CodeIgniter4.bk userguide.bk
- mv CodeIgniter4 CodeIgniter4.bk
- mv userguide userguide.bk
- git clone git@github.com:codeigniter4/CodeIgniter4.git
- git clone git@github.com:codeigniter4/userguide.git
- ```
-* [ ] Vet the **admin/** folders for any removed hidden files (Action deploy scripts
- *do not remove these*)
- ```console
- cd CodeIgniter4
- git diff --name-status origin/master admin/
- ```
-* [ ] Merge any Security Advisory PRs in private forks
-
## Process
-> **Note** Most changes that need noting in the User Guide and docs should have
+> [!NOTE]
+> Most changes that need noting in the User Guide and docs should have
> 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
* [ ] Update **user_guide_src/source/changelogs/v4.x.x.rst**
* Remove the section titles that have no items
diff --git a/admin/starter/tests/session/ExampleSessionTest.php b/admin/starter/tests/session/ExampleSessionTest.php
index 6ada0c56996d..33242a477112 100644
--- a/admin/starter/tests/session/ExampleSessionTest.php
+++ b/admin/starter/tests/session/ExampleSessionTest.php
@@ -1,7 +1,6 @@
set('logged_in', 123);
$this->assertSame(123, $session->get('logged_in'));
diff --git a/admin/starter/tests/unit/HealthTest.php b/admin/starter/tests/unit/HealthTest.php
index 25f229b0cec5..f6a5a804802f 100644
--- a/admin/starter/tests/unit/HealthTest.php
+++ b/admin/starter/tests/unit/HealthTest.php
@@ -2,7 +2,6 @@
use CodeIgniter\Test\CIUnitTestCase;
use Config\App;
-use Config\Services;
use Tests\Support\Libraries\ConfigReader;
/**
@@ -17,7 +16,7 @@ public function testIsDefinedAppPath(): void
public function testBaseUrlHasBeenSet(): void
{
- $validation = Services::validation();
+ $validation = service('validation');
$env = false;
diff --git a/app/Config/Events.php b/app/Config/Events.php
index 62a7b86d46c8..946285b89519 100644
--- a/app/Config/Events.php
+++ b/app/Config/Events.php
@@ -44,10 +44,10 @@
*/
if (CI_DEBUG && ! is_cli()) {
Events::on('DBQuery', 'CodeIgniter\Debug\Toolbar\Collectors\Database::collect');
- Services::toolbar()->respond();
+ service('toolbar')->respond();
// Hot Reload route - for framework use on the hot reloader.
if (ENVIRONMENT === 'development') {
- Services::routes()->get('__hot-reload', static function (): void {
+ service('routes')->get('__hot-reload', static function (): void {
(new HotReloader())->run();
});
}
diff --git a/app/Config/Format.php b/app/Config/Format.php
index 3de98d7a95d7..2838f55ef0d9 100644
--- a/app/Config/Format.php
+++ b/app/Config/Format.php
@@ -72,6 +72,6 @@ class Format extends BaseConfig
*/
public function getFormatter(string $mime)
{
- return Services::format()->getFormatter($mime);
+ return service('format')->getFormatter($mime);
}
}
diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php
index 8b435dab7056..689405bdf314 100644
--- a/app/Controllers/BaseController.php
+++ b/app/Controllers/BaseController.php
@@ -53,6 +53,6 @@ public function initController(RequestInterface $request, ResponseInterface $res
// Preload any models, libraries, etc, here.
- // E.g.: $this->session = \Config\Services::session();
+ // E.g.: $this->session = service('session');
}
}
diff --git a/app/Views/errors/cli/error_exception.php b/app/Views/errors/cli/error_exception.php
index 9f47d25141d2..2bf1459d4094 100644
--- a/app/Views/errors/cli/error_exception.php
+++ b/app/Views/errors/cli/error_exception.php
@@ -52,7 +52,7 @@
$args = implode(', ', array_map(static fn ($value) => 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/error_exception.php b/app/Views/errors/html/error_exception.php
index 44d749892473..d5e0c2ec7ee0 100644
--- a/app/Views/errors/html/error_exception.php
+++ b/app/Views/errors/html/error_exception.php
@@ -1,6 +1,5 @@
-
+
@@ -343,7 +342,7 @@
setStatusCode(http_response_code());
?>
diff --git a/composer.json b/composer.json
index c2ed6374b550..76362069c615 100644
--- a/composer.json
+++ b/composer.json
@@ -17,18 +17,19 @@
"psr/log": "^3.0"
},
"require-dev": {
- "codeigniter/phpstan-codeigniter": "^1.4",
+ "codeigniter/phpstan-codeigniter": "^1.5.1",
"fakerphp/faker": "^1.9",
"kint-php/kint": "^5.0.4",
"mikey179/vfsstream": "^1.6",
"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.4"
+ "rector/rector": "2.0.4",
+ "shipmonk/phpstan-baseline-per-identifier": "^2.0"
},
"replace": {
"codeigniter4/framework": "self.version"
@@ -80,7 +81,8 @@
},
"extra": {
"branch-alias": {
- "dev-develop": "4.x-dev"
+ "dev-develop": "4.x-dev",
+ "dev-master": "4.x-dev"
}
},
"scripts": {
@@ -110,7 +112,12 @@
"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": [
+ "bash -c \"rm -rf utils/phpstan-baseline/*.neon\"",
+ "bash -c \"touch utils/phpstan-baseline/loader.neon\"",
+ "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/phpdoc.dist.xml b/phpdoc.dist.xml
index 7f13b0e78cff..686c89010971 100644
--- a/phpdoc.dist.xml
+++ b/phpdoc.dist.xml
@@ -10,7 +10,7 @@
api/cache/
-
+