Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
45073a8
docs: add changelog and upgrade for v4.6.2 (#9547)
paulbalandan May 3, 2025
d8db403
chore(deps-dev): update rector/rector requirement from 2.0.14 to 2.0.15
dependabot[bot] May 5, 2025
b5fc9b5
Merge pull request #9549 from codeigniter4/dependabot/composer/rector…
samsonasik May 6, 2025
9cb6a08
chore: update predis/predis to version 3 (#9550)
michalsn May 6, 2025
10d3915
chore: bump to laminas-escaper v2.17 (#9552)
paulbalandan May 7, 2025
50ae7d7
chore(deps-dev): update rector/rector requirement from 2.0.15 to 2.0.16
dependabot[bot] May 13, 2025
db79418
Merge pull request #9554 from codeigniter4/dependabot/composer/rector…
samsonasik May 13, 2025
551c56d
chore: add missing EscaperInterface to the AutoloadConfig (#9561)
michalsn May 15, 2025
153c738
fix: remove service dependency from sanitize_filename() helper functi…
michalsn May 18, 2025
e7898a0
test: ensure all test methods have native return types (#9565)
paulbalandan May 18, 2025
c8f8ff7
refactor: add `system/util_bootstrap.php` to curb overreliance to `sy…
paulbalandan May 18, 2025
fce2858
docs: `CookieStore::get()` does not give an array of Cookie objects (…
paulbalandan May 18, 2025
4fd4be1
test: fix `PublisherInputTest::testAddUri(s)` failing due to rate lim…
paulbalandan May 18, 2025
a21845c
refactor: update places to use `system/util_bootstrap.php` (#9568)
paulbalandan May 19, 2025
9d032ef
refactor: more accurate array PHPDocs of Cookie (#9569)
paulbalandan May 19, 2025
9b14ad9
refactor: use native phpdocs wherever possible (#9571)
paulbalandan May 24, 2025
3638a49
fix: use native PHP truthiness for condition evaluation in when()/whe…
michalsn May 26, 2025
045e12b
fix: throw exception for unsupported DB drivers in session (#9574)
michalsn May 26, 2025
edb04a7
refactor: fix `notIdentical.alwaysTrue` error (#9579)
paulbalandan May 26, 2025
8c3f3e7
refactor: fix phpstan errors in `Events` (#9580)
paulbalandan May 26, 2025
c65b238
refactor: fix non-booleans in if conditions (#9578)
paulbalandan May 26, 2025
c3cc3fe
refactor: fix and micro-optimize code in `Format` (#9583)
paulbalandan May 27, 2025
327c7e1
refactor: add assert on `LiveModelTestCase::createModel()` (#9584)
paulbalandan May 27, 2025
7e19473
chore(deps-dev): update rector/rector requirement from 2.0.16 to 2.0.17
dependabot[bot] May 30, 2025
56544d0
Merge pull request #9589 from codeigniter4/dependabot/composer/rector…
samsonasik May 30, 2025
315f55b
docs: update description for the (:num) placeholder in routes (#9588)
michalsn May 31, 2025
63ab555
refactor: fix various phpstan errors in Log component (#9581)
paulbalandan May 31, 2025
acb5470
fix: add error handling for corrupted cache files in FileHandler (#9586)
michalsn May 31, 2025
58f6b16
refactor: partial fix errors on Email (#9582)
paulbalandan May 31, 2025
113a0fd
fix: crrect getHostname() fallback logic in Email class (#9587)
michalsn May 31, 2025
88ec911
refactor: fix phpstan errors in `ResponseTrait` (#9591)
paulbalandan Jun 3, 2025
a19b44c
chore: fix psalm error on 4.7 (#9590)
paulbalandan Jun 1, 2025
c2f9731
refactor: precise PHPDocs for Autoloader (#9593)
paulbalandan Jun 3, 2025
af68358
refactor: fix phpstan errors in mock classes (#9594)
paulbalandan Jun 3, 2025
f737307
chore(deps-dev): update rector/rector requirement from 2.0.17 to 2.0.18
dependabot[bot] Jun 11, 2025
5c7181e
Merge pull request #9599 from codeigniter4/dependabot/composer/rector…
samsonasik Jun 11, 2025
863faee
fix: encapsulation violation in `BasePreparedQuery` class (#9603)
michalsn Jun 22, 2025
e29ce02
fix: URI authority generation for schemes without default ports (#9605)
michalsn Jun 22, 2025
80005b2
docs: note removal of `AbstractRenderer::SORT_FULL` and `$richSort` i…
michalsn Jun 22, 2025
c7f2c80
chore: fix rector crash (#9608)
paulbalandan Jun 24, 2025
764cd55
chore: update phpstan baseline (#9609)
paulbalandan Jun 24, 2025
488ace9
refactor: fix various phpstan errors in Cache (#9610)
paulbalandan Jun 25, 2025
7aa73ff
fix: apply rector rule TernaryImplodeToImplodeRector
michalsn Jun 25, 2025
80fefc1
Merge pull request #9614 from michalsn/fix/rector
samsonasik Jun 26, 2025
4b1fa12
chore(deps-dev): update rector/rector requirement from 2.0.18 to 2.1.0
dependabot[bot] Jun 26, 2025
89581dc
Merge pull request #9612 from codeigniter4/dependabot/composer/rector…
samsonasik Jun 26, 2025
4247be6
refactor: `Console::showHeader()` call `date()` only once (#9616)
paulbalandan Jun 29, 2025
28e8096
fix: correct path parsing in SiteURIFactory::parseRequestURI() (#9613)
michalsn Jun 30, 2025
78f3842
fix: support for multibyte folder names when the app is served from a…
michalsn Jun 30, 2025
3d019b0
docs: fix outdated documentation on how to exclude multiple test grou…
Franky5831 Jul 3, 2025
228ba7d
docs: add detailed explanation about paginate() and beforeFind model …
michalsn Jul 5, 2025
1f2fdf7
style: fix code styles from php-cs-fixer v3.76 (#9626)
paulbalandan Jul 5, 2025
0121e8d
fix: use correct 24-hour time format. (#9628)
ping-yee Jul 8, 2025
42f68a6
style: fix code styles from php-cs-fixer v3.82.1 (#9629)
michalsn Jul 9, 2025
f15d707
fix: update .gitignore for writable/debugbar
totoprayogo1916 Jul 10, 2025
ff04e9e
fix: improve CURLRequest intermediate HTTP response handling (#9627)
michalsn Jul 10, 2025
a54e627
Merge pull request #9630 from totoprayogo1916/gitignore-appstarter-fr…
samsonasik Jul 10, 2025
4bf608d
chore(deps-dev): update rector/rector requirement from 2.1.0 to 2.1.1…
dependabot[bot] Jul 11, 2025
3bef730
chore: bump to psalm v6.12 (#9633)
paulbalandan Jul 14, 2025
268a527
fix: ensure `make:test` works on Windows (#9635)
paulbalandan Jul 15, 2025
b1fdbb7
fix: ensure `make:test` generate test files ending in `Test`
paulbalandan Jul 15, 2025
e52b915
Merge pull request #9636 from paulbalandan/make-test-suffix
samsonasik Jul 15, 2025
8c7ab80
fix: `make:test` requires 3 inputs after entering an empty class name…
paulbalandan Jul 15, 2025
dcfc715
fix: add filename parameters to inline Content-Disposition headers
michalsn Jul 16, 2025
1bcc4b3
chore: bump to rector 2.1.2
samsonasik Jul 18, 2025
9c0c411
Merge pull request #9640 from codeigniter4/samsonasik-patch-1
samsonasik Jul 18, 2025
90edae6
Merge pull request #9638 from michalsn/fix/content-disposition
samsonasik Jul 18, 2025
e18120b
Merge commit from fork
michalsn Jul 26, 2025
14719d8
Prep for 4.6.2 release (#9641)
paulbalandan Jul 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/test-coding-standards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,3 @@ jobs:

- name: Run lint
run: composer cs
env:
PHP_CS_FIXER_IGNORE_ENV: ${{ matrix.php-version == '8.4' }}
7 changes: 1 addition & 6 deletions .github/workflows/test-psalm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,7 @@ jobs:
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
10 changes: 2 additions & 8 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -44,12 +42,8 @@
];

$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(
Expand Down
3 changes: 2 additions & 1 deletion .php-cs-fixer.tests.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
->notName('#Foobar.php$#');

$overrides = [
'void_return' => true,
'phpdoc_to_return_type' => true,
'void_return' => true,
];

return $config
Expand Down
54 changes: 53 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,60 @@
# Changelog

## [v4.6.1](https://github.com/codeigniter4/CodeIgniter4/tree/v4.6.0) (2025-05-02)
## [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
Expand All @@ -13,6 +64,7 @@
* 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
Expand Down
2 changes: 1 addition & 1 deletion admin/framework/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ writable/uploads/*
!writable/uploads/index.html

writable/debugbar/*
!writable/debugbar/.gitkeep
!writable/debugbar/index.html

php_errors.log

Expand Down
4 changes: 2 additions & 2 deletions admin/framework/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"php": "^8.1",
"ext-intl": "*",
"ext-mbstring": "*",
"laminas/laminas-escaper": "^2.14",
"laminas/laminas-escaper": "^2.17",
"psr/log": "^3.0"
},
"require-dev": {
Expand All @@ -24,7 +24,7 @@
"mikey179/vfsstream": "^1.6.12",
"nexusphp/cs-config": "^3.6",
"phpunit/phpunit": "^10.5.16 || ^11.2",
"predis/predis": "^1.1 || ^2.3"
"predis/predis": "^3.0"
},
"suggest": {
"ext-curl": "If you use CURLRequest class",
Expand Down
2 changes: 1 addition & 1 deletion admin/starter/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ writable/uploads/*
!writable/uploads/index.html

writable/debugbar/*
!writable/debugbar/.gitkeep
!writable/debugbar/index.html

php_errors.log

Expand Down
6 changes: 3 additions & 3 deletions app/Config/Cache.php
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ class Cache extends BaseConfig
* Your file storage preferences can be specified below, if you are using
* the File driver.
*
* @var array<string, int|string|null>
* @var array{storePath?: string, mode?: int}
*/
public array $file = [
'storePath' => WRITEPATH . 'cache/',
Expand All @@ -95,7 +95,7 @@ class Cache extends BaseConfig
*
* @see https://codeigniter.com/user_guide/libraries/caching.html#memcached
*
* @var array<string, bool|int|string>
* @var array{host?: string, port?: int, weight?: int, raw?: bool}
*/
public array $memcached = [
'host' => '127.0.0.1',
Expand All @@ -112,7 +112,7 @@ class Cache extends BaseConfig
* Your Redis server can be specified below, if you are using
* the Redis or Predis drivers.
*
* @var array<string, int|string|null>
* @var array{host?: string, password?: string|null, port?: int, timeout?: int, database?: int}
*/
public array $redis = [
'host' => '127.0.0.1',
Expand Down
2 changes: 1 addition & 1 deletion app/Config/Cookie.php
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
3 changes: 2 additions & 1 deletion app/Config/Logger.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use CodeIgniter\Config\BaseConfig;
use CodeIgniter\Log\Handlers\FileHandler;
use CodeIgniter\Log\Handlers\HandlerInterface;

class Logger extends BaseConfig
{
Expand Down Expand Up @@ -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<class-string, array<string, int|list<string>|string>>
* @var array<class-string<HandlerInterface>, array<string, int|list<string>|string>>
*/
public array $handlers = [
/*
Expand Down
2 changes: 1 addition & 1 deletion app/Views/errors/html/error_exception.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<!-- Header -->
<div class="header">
<div class="environment">
Displayed at <?= esc(date('H:i:sa')) ?> &mdash;
Displayed at <?= esc(date('H:i:s')) ?> &mdash;
PHP: <?= esc(PHP_VERSION) ?> &mdash;
CodeIgniter: <?= esc(CodeIgniter::CI_VERSION) ?> --
Environment: <?= ENVIRONMENT ?>
Expand Down
8 changes: 4 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"php": "^8.1",
"ext-intl": "*",
"ext-mbstring": "*",
"laminas/laminas-escaper": "^2.14",
"laminas/laminas-escaper": "^2.17",
"psr/log": "^3.0"
},
"require-dev": {
Expand All @@ -27,8 +27,8 @@
"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.3",
"rector/rector": "2.0.14",
"predis/predis": "^3.0",
"rector/rector": "2.1.2",
"shipmonk/phpstan-baseline-per-identifier": "^2.0"
},
"replace": {
Expand Down Expand Up @@ -89,7 +89,7 @@
"CodeIgniter\\ComposerScripts::postUpdate"
],
"post-autoload-dump": [
"@composer update --working-dir=utils --ignore-platform-req=php"
"@composer update --ansi --working-dir=utils"
],
"analyze": [
"Composer\\Config::disableProcessTimeout",
Expand Down
2 changes: 1 addition & 1 deletion phpdoc.dist.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<output>api/build/</output>
<cache>api/cache/</cache>
</paths>
<version number="4.6.1">
<version number="4.6.2">
<api format="php">
<source dsn=".">
<path>system</path>
Expand Down
17 changes: 14 additions & 3 deletions phpstan-bootstrap.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
<?php

require __DIR__ . '/system/Test/bootstrap.php';
require __DIR__ . '/system/util_bootstrap.php';

if (! defined('OCI_COMMIT_ON_SUCCESS')) {
define('OCI_COMMIT_ON_SUCCESS', 32);
defined('OCI_COMMIT_ON_SUCCESS') || define('OCI_COMMIT_ON_SUCCESS', 32);

foreach ([
'app/Config',
] as $directory) {
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

/** @var SplFileInfo $file */
foreach ($iterator as $file) {
if ($file->isFile() && $file->getExtension() === 'php') {
require_once $file->getRealPath();
}
}
}
50 changes: 50 additions & 0 deletions psalm-autoload.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

declare(strict_types=1);

require __DIR__ . '/system/util_bootstrap.php';

$directories = [
'system/Helpers',
'tests/_support',
'tests/system/Config/fixtures',
];
$excludeDirs = [
'tests/_support/View/Cells',
'tests/_support/View/Views',
];
$excludeFiles = [
'tests/_support/Config/Filters.php',
'tests/_support/Config/Routes.php',
];

foreach ($directories as $directory) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
$directory,
RecursiveDirectoryIterator::UNIX_PATHS | RecursiveDirectoryIterator::CURRENT_AS_FILEINFO,
),
RecursiveIteratorIterator::CHILD_FIRST,
);

/** @var SplFileInfo $file */
foreach ($iterator as $file) {
if (! $file->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();
}
}
Loading
Loading