Skip to content

Commit 9474230

Browse files
[12.x] PHP 8.5 Compatibility (#57835)
* [12.x] PHP 8.5 Compatibility Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * Update `config/database.php` Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * Apply fixes from StyleCI * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> * wip Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> --------- Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com> Co-authored-by: StyleCI Bot <bot@styleci.io>
1 parent 8f982ce commit 9474230

File tree

13 files changed

+81
-13
lines changed

13 files changed

+81
-13
lines changed

.github/workflows/tests.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,18 @@ jobs:
4848
- php: 8.2
4949
phpunit: '12.4.0'
5050
include:
51+
- php: 8.5
52+
phpunit: '12.1.0'
53+
stability: prefer-stable
54+
- php: 8.5
55+
phpunit: '12.2.0'
56+
stability: prefer-stable
57+
- php: 8.5
58+
phpunit: '12.3.0'
59+
stability: prefer-stable
60+
- php: 8.5
61+
phpunit: '12.4.0'
62+
stability: prefer-stable
5163
- php: 8.3
5264
phpunit: '12.1.0'
5365
stability: prefer-stable
@@ -119,6 +131,18 @@ jobs:
119131
- php: 8.2
120132
phpunit: '12.4.0'
121133
include:
134+
- php: 8.5
135+
phpunit: '12.1.0'
136+
stability: prefer-stable
137+
- php: 8.5
138+
phpunit: '12.2.0'
139+
stability: prefer-stable
140+
- php: 8.5
141+
phpunit: '12.3.0'
142+
stability: prefer-stable
143+
- php: 8.5
144+
phpunit: '12.4.0'
145+
stability: prefer-stable
122146
- php: 8.3
123147
phpunit: '12.1.0'
124148
stability: prefer-stable

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
"league/flysystem-sftp-v3": "^3.25.1",
116116
"mockery/mockery": "^1.6.10",
117117
"opis/json-schema": "^2.4.1",
118-
"orchestra/testbench-core": "^10.7.0",
118+
"orchestra/testbench-core": "^10.8.0",
119119
"pda/pheanstalk": "^5.0.6|^7.0.0",
120120
"php-http/discovery": "^1.15",
121121
"phpstan/phpstan": "^2.0",

config/database.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
'strict' => true,
6262
'engine' => null,
6363
'options' => extension_loaded('pdo_mysql') ? array_filter([
64-
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
64+
(PHP_VERSION_ID >= 80500 ? Pdo\Mysql::ATTR_SSL_CA : PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
6565
]) : [],
6666
],
6767

@@ -81,7 +81,7 @@
8181
'strict' => true,
8282
'engine' => null,
8383
'options' => extension_loaded('pdo_mysql') ? array_filter([
84-
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
84+
(PHP_VERSION_ID >= 80500 ? Pdo\Mysql::ATTR_SSL_CA : PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'),
8585
]) : [],
8686
],
8787

src/Illuminate/Cache/RedisTagSet.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,18 @@ public function entries()
4848
$cursor = $defaultCursorValue;
4949

5050
do {
51-
[$cursor, $entries] = $connection->zscan(
51+
$results = $connection->zscan(
5252
$this->store->getPrefix().$tagKey,
5353
$cursor,
5454
['match' => '*', 'count' => 1000]
5555
);
5656

57+
if (! is_array($results)) {
58+
break;
59+
}
60+
61+
[$cursor, $entries] = $results;
62+
5763
if (! is_array($entries)) {
5864
break;
5965
}

src/Illuminate/Collections/Arr.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,10 +844,10 @@ public static function mapSpread(array $array, callable $callback)
844844
*
845845
* @param array $array
846846
* @param mixed $value
847-
* @param array-key $key
847+
* @param mixed $key
848848
* @return array
849849
*/
850-
public static function prepend($array, $value, $key = '')
850+
public static function prepend($array, $value, $key = null)
851851
{
852852
if (func_num_args() == 2) {
853853
array_unshift($array, $value);

src/Illuminate/Collections/Collection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,7 @@ public function pop($count = 1)
10331033
*/
10341034
public function prepend($value, $key = null)
10351035
{
1036-
$this->items = Arr::prepend($this->items, ...func_get_args());
1036+
$this->items = Arr::prepend($this->items, ...(func_num_args() > 1 ? func_get_args() : [$value]));
10371037

10381038
return $this;
10391039
}

src/Illuminate/Database/Connectors/Connector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function createConnection($dsn, array $config, array $options)
6262
*/
6363
protected function createPdoConnection($dsn, $username, #[\SensitiveParameter] $password, $options)
6464
{
65-
return version_compare(phpversion(), '8.4.0', '<')
65+
return version_compare(PHP_VERSION, '8.4.0', '<')
6666
? new PDO($dsn, $username, $password, $options)
6767
: PDO::connect($dsn, $username, $password, $options); /** @phpstan-ignore staticMethod.notFound (PHP 8.4) */
6868
}

src/Illuminate/Database/Schema/MySqlSchemaState.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ protected function connectionString()
111111
? ' --socket="${:LARAVEL_LOAD_SOCKET}"'
112112
: ' --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}"';
113113

114-
if (isset($config['options'][\PDO::MYSQL_ATTR_SSL_CA])) {
114+
/** @phpstan-ignore class.notFound */
115+
if (isset($config['options'][PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA])) {
115116
$value .= ' --ssl-ca="${:LARAVEL_LOAD_SSL_CA}"';
116117
}
117118

@@ -140,7 +141,7 @@ protected function baseVariables(array $config)
140141
'LARAVEL_LOAD_USER' => $config['username'],
141142
'LARAVEL_LOAD_PASSWORD' => $config['password'] ?? '',
142143
'LARAVEL_LOAD_DATABASE' => $config['database'],
143-
'LARAVEL_LOAD_SSL_CA' => $config['options'][\PDO::MYSQL_ATTR_SSL_CA] ?? '',
144+
'LARAVEL_LOAD_SSL_CA' => $config['options'][PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA] ?? '', // @phpstan-ignore class.notFound
144145
];
145146
}
146147

tests/Cache/RedisCacheIntegrationTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
use Illuminate\Support\Env;
1212
use InvalidArgumentException;
1313
use PHPUnit\Framework\Attributes\DataProvider;
14+
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
1415
use PHPUnit\Framework\TestCase;
1516
use Redis;
1617

18+
#[RequiresPhpExtension('redis')]
1719
class RedisCacheIntegrationTest extends TestCase
1820
{
1921
use InteractsWithRedis;
@@ -166,6 +168,10 @@ public function testItFailsWithAnInvalidPhpRedisAlgorithm()
166168

167169
public static function phpRedisBackoffAlgorithmsProvider()
168170
{
171+
if (! class_exists(Redis::class)) {
172+
return [];
173+
}
174+
169175
return [
170176
['default', Redis::BACKOFF_ALGORITHM_DEFAULT],
171177
['decorrelated_jitter', Redis::BACKOFF_ALGORITHM_DECORRELATED_JITTER],

tests/Database/DatabaseMariaDbSchemaStateTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public static function provider(): Generator
6363
'username' => 'root',
6464
'database' => 'forge',
6565
'options' => [
66-
\PDO::MYSQL_ATTR_SSL_CA => 'ssl.ca',
66+
PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA => 'ssl.ca',
6767
],
6868
],
6969
];

0 commit comments

Comments
 (0)