From 750ccb0c47f64275748dfa053dd1d454ef41e9c4 Mon Sep 17 00:00:00 2001
From: Peter Schade
Date: Tue, 21 Jul 2026 09:09:21 +0200
Subject: [PATCH] Fix implicitly nullable parameters deprecated in PHP 8.4
Explicitly mark nullable parameters (`?Type`) instead of relying on the
implicit nullability of a typed parameter with a `null` default, which is
deprecated as of PHP 8.4 and emits a deprecation notice at runtime.
Affected signatures:
- QueryBuilderHandler::__construct(), delete(), getEvent()
- Exception::__construct(), create()
- BaseAdapter::delete()
- Sqlserver::delete()
- NestedCriteria::whereHandler()
---
src/Pecee/Pixie/Exception.php | 4 ++--
src/Pecee/Pixie/QueryBuilder/Adapters/BaseAdapter.php | 2 +-
src/Pecee/Pixie/QueryBuilder/Adapters/Sqlserver.php | 2 +-
src/Pecee/Pixie/QueryBuilder/NestedCriteria.php | 2 +-
src/Pecee/Pixie/QueryBuilder/QueryBuilderHandler.php | 6 +++---
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/Pecee/Pixie/Exception.php b/src/Pecee/Pixie/Exception.php
index 88d08fc..22ab6de 100644
--- a/src/Pecee/Pixie/Exception.php
+++ b/src/Pecee/Pixie/Exception.php
@@ -28,7 +28,7 @@ class Exception extends \Exception
*/
protected $query;
- final public function __construct(string $message = '', int $code = 0, Throwable $previous = null, QueryObject $query = null)
+ final public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null, ?QueryObject $query = null)
{
parent::__construct($message, $code, $previous);
$this->query = $query;
@@ -45,7 +45,7 @@ final public function __construct(string $message = '', int $code = 0, Throwable
* @see https://www.postgresql.org/docs/9.4/static/errcodes-appendix.html
* @see https://sqlite.org/c3ref/c_abort.html
*/
- public static function create(\Exception $e, string $adapterName = null, QueryObject $query = null)
+ public static function create(\Exception $e, ?string $adapterName = null, ?QueryObject $query = null)
{
if ($e instanceof \PDOException) {
diff --git a/src/Pecee/Pixie/QueryBuilder/Adapters/BaseAdapter.php b/src/Pecee/Pixie/QueryBuilder/Adapters/BaseAdapter.php
index 05d32bc..5133a30 100644
--- a/src/Pecee/Pixie/QueryBuilder/Adapters/BaseAdapter.php
+++ b/src/Pecee/Pixie/QueryBuilder/Adapters/BaseAdapter.php
@@ -394,7 +394,7 @@ public function criteriaOnly(array $statements, $bindValues = true): array
* @return array
* @throws Exception
*/
- public function delete(array $statements, array $columns = null): array
+ public function delete(array $statements, ?array $columns = null): array
{
$table = end($statements['tables']);
diff --git a/src/Pecee/Pixie/QueryBuilder/Adapters/Sqlserver.php b/src/Pecee/Pixie/QueryBuilder/Adapters/Sqlserver.php
index 2d35e5e..b2fdfa1 100644
--- a/src/Pecee/Pixie/QueryBuilder/Adapters/Sqlserver.php
+++ b/src/Pecee/Pixie/QueryBuilder/Adapters/Sqlserver.php
@@ -129,7 +129,7 @@ public function select(array $statements): array
* @return array
* @throws Exception
*/
- public function delete(array $statements, array $columns = null): array
+ public function delete(array $statements, ?array $columns = null): array
{
$table = end($statements['tables']);
diff --git a/src/Pecee/Pixie/QueryBuilder/NestedCriteria.php b/src/Pecee/Pixie/QueryBuilder/NestedCriteria.php
index d57704d..a0ecf75 100644
--- a/src/Pecee/Pixie/QueryBuilder/NestedCriteria.php
+++ b/src/Pecee/Pixie/QueryBuilder/NestedCriteria.php
@@ -17,7 +17,7 @@ class NestedCriteria extends QueryBuilderHandler
*
* @return static
*/
- protected function whereHandler($key, string $operator = null, $value = null, $joiner = 'AND'): QueryBuilderHandler
+ protected function whereHandler($key, ?string $operator = null, $value = null, $joiner = 'AND'): QueryBuilderHandler
{
$key = $this->addTablePrefix($key);
$this->statements['criteria'][] = compact('key', 'operator', 'value', 'joiner');
diff --git a/src/Pecee/Pixie/QueryBuilder/QueryBuilderHandler.php b/src/Pecee/Pixie/QueryBuilder/QueryBuilderHandler.php
index 22be66a..2a56d73 100644
--- a/src/Pecee/Pixie/QueryBuilder/QueryBuilderHandler.php
+++ b/src/Pecee/Pixie/QueryBuilder/QueryBuilderHandler.php
@@ -84,7 +84,7 @@ class QueryBuilderHandler implements IQueryBuilderHandler
*
* @throws Exception
*/
- final public function __construct(Connection $connection = null)
+ final public function __construct(?Connection $connection = null)
{
$this->connection = $connection ?? Connection::getStoredConnection();
@@ -860,7 +860,7 @@ public function max(string $field): float
* @throws \Pecee\Pixie\Exceptions\TableNotFoundException
* @return \PDOStatement
*/
- public function delete(array $columns = null): \PDOStatement
+ public function delete(?array $columns = null): \PDOStatement
{
/* @var $response \PDOStatement */
$queryObject = $this->getQuery('delete', $columns);
@@ -974,7 +974,7 @@ public function findAll(string $fieldName, $value): array
*
* @return callable|null
*/
- public function getEvent(string $name, string $table = null): ?callable
+ public function getEvent(string $name, ?string $table = null): ?callable
{
return $this->connection->getEventHandler()->getEvent($name, $table);
}