diff --git a/app/Config/App.php b/app/Config/App.php index 8a0d1466..a80b7ad3 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -292,18 +292,21 @@ class App extends BaseConfig * * If your server is behind a reverse proxy, you must whitelist the proxy * IP addresses from which CodeIgniter should trust headers such as - * HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP in order to properly identify + * X-Forwarded-For or Client-IP in order to properly identify * the visitor's IP address. * - * You can use both an array or a comma-separated list of proxy addresses, - * as well as specifying whole subnets. Here are a few examples: + * You need to set a proxy IP address or IP address with subnets and + * the HTTP header for the client IP address. * - * Comma-separated: '10.0.1.200,192.168.5.0/24' - * Array: ['10.0.1.200', '192.168.5.0/24'] + * Here are some examples: + * [ + * '10.0.1.200' => 'X-Forwarded-For', + * '192.168.5.0/24' => 'X-Real-IP', + * ] * - * @var string|string[] + * @var array */ - public string | array $proxyIPs = ''; + public array $proxyIPs = []; /** * -------------------------------------------------------------------------- diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index f8ad08ec..26d55e20 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -39,7 +39,8 @@ class Autoload extends AutoloadConfig * 'App' => APPPATH * ]; * - * @var array + * @var array|string> + * @phpstan-var array> */ public $psr4 = [ APP_NAMESPACE => APPPATH, diff --git a/app/Config/Cache.php b/app/Config/Cache.php index 36a353e2..ffa3c07b 100644 --- a/app/Config/Cache.php +++ b/app/Config/Cache.php @@ -124,7 +124,7 @@ class Cache extends BaseConfig * * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached * - * @var array + * @var array */ public array $memcached = [ 'host' => '127.0.0.1', diff --git a/app/Config/Logger.php b/app/Config/Logger.php index 6e6d59cf..ad866070 100644 --- a/app/Config/Logger.php +++ b/app/Config/Logger.php @@ -114,5 +114,32 @@ class Logger extends BaseConfig */ 'path' => '', ], + + /* + * The ChromeLoggerHandler requires the use of the Chrome web browser + * and the ChromeLogger extension. Uncomment this block to use it. + */ + // 'CodeIgniter\Log\Handlers\ChromeLoggerHandler' => [ + // /* + // * The log levels that this handler will handle. + // */ + // 'handles' => ['critical', 'alert', 'emergency', 'debug', + // 'error', 'info', 'notice', 'warning'], + // ], + + /* + * The ErrorlogHandler writes the logs to PHP's native `error_log()` function. + * Uncomment this block to use it. + */ + // 'CodeIgniter\Log\Handlers\ErrorlogHandler' => [ + // /* The log levels this handler can handle. */ + // 'handles' => ['critical', 'alert', 'emergency', 'debug', 'error', 'info', 'notice', 'warning'], + // + // /* + // * The message type where the error should go. Can be 0 or 4, or use the + // * class constants: `ErrorlogHandler::TYPE_OS` (0) or `ErrorlogHandler::TYPE_SAPI` (4) + // */ + // 'messageType' => 0, + // ], ]; } diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php index 243bbc94..9edba659 100644 --- a/app/Controllers/BaseController.php +++ b/app/Controllers/BaseController.php @@ -28,6 +28,21 @@ abstract class BaseController extends Controller */ 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 string[] + */ + 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; + /** * Constructor. */ diff --git a/composer.json b/composer.json index 5ef0e641..6e747849 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,7 @@ "license": "AGPL-3.0-or-later", "require": { "php": "^8.1", - "codeigniter4/framework": "v4.2.7", + "codeigniter4/framework": "v4.2.12", "james-heinrich/getid3": "^2.0.0-beta5", "whichbrowser/parser": "^v2.1.7", "geoip2/geoip2": "v2.13.0", @@ -23,7 +23,7 @@ "chrisjean/php-ico": "^1.0.4", "melbahja/seo": "^v2.1.1", "codeigniter4/shield": "v1.0.0-beta.6", - "aws/aws-sdk-php": "^3.275.1", + "aws/aws-sdk-php": "^3.275.2", "mpratt/embera": "^2.0.34", "codeigniter4/tasks": "dev-develop", "yassinedoghri/podcast-feed": "dev-main" @@ -33,7 +33,7 @@ "phpunit/phpunit": "^10.2.3", "captainhook/captainhook": "^5.16.4", "symplify/easy-coding-standard": "^11.5.0", - "phpstan/phpstan": "^1.10.22", + "phpstan/phpstan": "^1.10.23", "rector/rector": "^0.17.2", "symplify/coding-standard": "^11.4.1" }, diff --git a/composer.lock b/composer.lock index b834497e..a9e956de 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "942a9d1dc5e734592657b1a3f651007e", + "content-hash": "658d8ad2579bb70845c1150757868314", "packages": [ { "name": "adaures/ipcat-php", @@ -120,16 +120,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.275.1", + "version": "3.275.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "6cf6aacecda1dec52bf4a70d8e1503b5bc56e924" + "reference": "4506d631caf6097fd73009d57707e61b95efe92c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6cf6aacecda1dec52bf4a70d8e1503b5bc56e924", - "reference": "6cf6aacecda1dec52bf4a70d8e1503b5bc56e924", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4506d631caf6097fd73009d57707e61b95efe92c", + "reference": "4506d631caf6097fd73009d57707e61b95efe92c", "shasum": "" }, "require": { @@ -205,9 +205,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.275.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.275.2" }, - "time": "2023-06-30T18:23:40+00:00" + "time": "2023-07-03T18:27:31+00:00" }, { "name": "brick/math", @@ -304,20 +304,19 @@ }, { "name": "codeigniter4/framework", - "version": "v4.2.7", + "version": "v4.2.12", "source": { "type": "git", "url": "https://github.com/codeigniter4/framework.git", - "reference": "011ce3bbda6f85930075a9b8fecbee01c4b23ab9" + "reference": "bc3f312a3ebaf53394fa099b090b7a52a29375c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codeigniter4/framework/zipball/011ce3bbda6f85930075a9b8fecbee01c4b23ab9", - "reference": "011ce3bbda6f85930075a9b8fecbee01c4b23ab9", + "url": "https://api.github.com/repos/codeigniter4/framework/zipball/bc3f312a3ebaf53394fa099b090b7a52a29375c2", + "reference": "bc3f312a3ebaf53394fa099b090b7a52a29375c2", "shasum": "" }, "require": { - "ext-curl": "*", "ext-intl": "*", "ext-json": "*", "ext-mbstring": "*", @@ -329,15 +328,20 @@ "require-dev": { "codeigniter/coding-standard": "^1.5", "fakerphp/faker": "^1.9", - "friendsofphp/php-cs-fixer": "~3.11.0", + "friendsofphp/php-cs-fixer": "3.13.0", "mikey179/vfsstream": "^1.6", "nexusphp/cs-config": "^3.6", "phpunit/phpunit": "^9.1", "predis/predis": "^1.1 || ^2.0" }, "suggest": { + "ext-curl": "If you use CURLRequest class", + "ext-dom": "If you use TestResponse", + "ext-exif": "If you run Image class tests", "ext-fileinfo": "Improves mime type detection for files", + "ext-gd": "If you use Image class GDHandler", "ext-imagick": "If you use Image class ImageMagickHandler", + "ext-libxml": "If you use TestResponse", "ext-memcache": "If you use Cache class MemcachedHandler with Memcache", "ext-memcached": "If you use Cache class MemcachedHandler with Memcached", "ext-mysqli": "If you use MySQL", @@ -347,7 +351,8 @@ "ext-redis": "If you use Cache class RedisHandler", "ext-simplexml": "If you format XML", "ext-sqlite3": "If you use SQLite3", - "ext-sqlsrv": "If you use SQL Server" + "ext-sqlsrv": "If you use SQL Server", + "ext-xdebug": "If you use CIUnitTestCase::assertHeaderEmitted()" }, "type": "project", "autoload": { @@ -361,11 +366,11 @@ "description": "The CodeIgniter framework v4", "homepage": "https://codeigniter.com", "support": { - "forum": "http://forum.codeigniter.com/", + "forum": "https://forum.codeigniter.com/", "slack": "https://codeigniterchat.slack.com", "source": "https://github.com/codeigniter4/CodeIgniter4" }, - "time": "2022-10-06T13:46:23+00:00" + "time": "2023-01-09T06:53:50+00:00" }, { "name": "codeigniter4/settings", @@ -3947,16 +3952,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.22", + "version": "1.10.23", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287" + "reference": "65ab678d1248a8bc6fde456f0d7ff3562a61a4cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97d694dfd4ceb57bcce4e3b38548f13ea62e4287", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/65ab678d1248a8bc6fde456f0d7ff3562a61a4cd", + "reference": "65ab678d1248a8bc6fde456f0d7ff3562a61a4cd", "shasum": "" }, "require": { @@ -3995,7 +4000,7 @@ "type": "tidelift" } ], - "time": "2023-06-30T20:04:11+00:00" + "time": "2023-07-04T13:32:44+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/phpstan.neon b/phpstan.neon index a666c0f4..0817a290 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -22,3 +22,4 @@ parameters: - SODIUM_LIBRARY_VERSION ignoreErrors: - '#^Access to an undefined property Modules\\Media\\Entities\\Image#' + - '#^Call to an undefined method CodeIgniter\\Cache\\CacheInterface\:\:deleteMatching\(\)#' diff --git a/preload.php b/preload.php index 95d7f1e7..621b7a5f 100644 --- a/preload.php +++ b/preload.php @@ -18,7 +18,8 @@ declare(strict_types=1); * See https://www.php.net/manual/en/opcache.preloading.php * * How to Use: - * 1. Set preload::$paths. + * 0. Copy this file to your project root folder. + * 1. Set the $paths property of the preload class below. * 2. Set opcache.preload in php.ini. * php.ini: * opcache.preload=/path/to/preload.php