diff --git a/lib/classes/StudipPDO.class.php b/lib/classes/StudipPDO.class.php
index 08012b105456b947d18b24e3372f2d7c8f813673..e77a37fc5f06503005698cc02b2faaae8645d77a 100644
--- a/lib/classes/StudipPDO.class.php
+++ b/lib/classes/StudipPDO.class.php
@@ -184,6 +184,7 @@ class StudipPDO extends PDO
      * @param mixed  ...$fetch_args fetch mode parameters (see PDOStatement::setFetchMode)
      * @return object   PDOStatement object
      */
+    #[ReturnTypeWillChange]
     public function query($statement, $fetch_mode = NULL, ...$fetch_args)
     {
         $this->verify($statement);
diff --git a/lib/classes/restapi/consumer/Base.php b/lib/classes/restapi/consumer/Base.php
index 62720917b9050e7ed4f6bfe188e95c6f68e3ef98..50f31501e5f3522e6730d9d1240e58ab452a7fc4 100644
--- a/lib/classes/restapi/consumer/Base.php
+++ b/lib/classes/restapi/consumer/Base.php
@@ -108,7 +108,7 @@ abstract class Base extends \SimpleORMap
         $statement = DBManager::get()->query($query);
         $ids = $statement->fetchAll(PDO::FETCH_COLUMN);
 
-        return array_map('self::find', $ids);
+        return array_map([self::class, 'find'], $ids);
     }
 
     /**
diff --git a/lib/models/PersonalNotifications.class.php b/lib/models/PersonalNotifications.class.php
index efa44c16b701ace478e6ddd1c5457e24f838a2da..721038cd63d0d31e377bcfbc46cf3e196548eb51 100644
--- a/lib/models/PersonalNotifications.class.php
+++ b/lib/models/PersonalNotifications.class.php
@@ -107,7 +107,7 @@ class PersonalNotifications extends SimpleORMap
             $user_ids = [$user_ids];
         }
 
-        $user_ids = array_filter($user_ids, 'self::isActivated');
+        $user_ids = array_filter($user_ids, [self::class, 'isActivated']);
 
         if (!count($user_ids)) {
             return false;
diff --git a/lib/models/SimpleCollection.class.php b/lib/models/SimpleCollection.class.php
index 42285998aadcef9f8bf171b058b3e9f67aa69b2a..4d776824003dd8b9dc807d276c3b8ceedc67abc6 100644
--- a/lib/models/SimpleCollection.class.php
+++ b/lib/models/SimpleCollection.class.php
@@ -154,7 +154,7 @@ class SimpleCollection extends StudipArrayObject
                 case '%=':
                     $comp_func = function ($a) use ($args) {
                         $a = mb_strtolower(static::translitLatin1($a));
-                        $args = array_map('static::translitLatin1', $args);
+                        $args = array_map([static::class, 'translitLatin1'], $args);
                         $args = array_map('mb_strtolower', $args);
                         return in_array($a, $args);
                     };
@@ -256,7 +256,10 @@ class SimpleCollection extends StudipArrayObject
      */
     public function exchangeArray($input)
     {
-        return parent::exchangeArray(array_map('static::arrayToArrayObject', $input));
+        return parent::exchangeArray(array_map(
+            [static::class, 'arrayToArrayObject'],
+            $input
+        ));
     }
 
     /**
diff --git a/lib/models/StudipNews.class.php b/lib/models/StudipNews.class.php
index f909fb4cd5cf6d37593bdc35a434ae7112014485..607f9d3fda259ffde0bcc3101dc6642282d20ee6 100644
--- a/lib/models/StudipNews.class.php
+++ b/lib/models/StudipNews.class.php
@@ -184,7 +184,10 @@ class StudipNews extends SimpleORMap implements PrivacyObject
 
     public static function GetNewsObjects($news_result)
     {
-        return array_map('static::buildExisting', (array) $news_result);
+        return array_map(
+            [static::class, 'buildExisting'],
+            (array) $news_result
+        );
     }
 
     /**
diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php
index bb8a5635bb12fa5c23dcbda035a036a3a95e6879..be4f76618313a1f9bc49096fd533061d8bf61cb3 100644
--- a/lib/plugins/engine/PluginManager.class.php
+++ b/lib/plugins/engine/PluginManager.class.php
@@ -644,7 +644,7 @@ class PluginManager
         $plugin_info = $this->getPluginInfos($type);
         $plugins = [];
 
-        usort($plugin_info, ['self', 'positionCompare']);
+        usort($plugin_info, [self::class, 'positionCompare']);
 
         foreach ($plugin_info as $info) {
             $activated = $context == null
diff --git a/vendor/trails/trails.php b/vendor/trails/trails.php
index dc520191e59d2e0b22643da1972443b0faa99426..b88a4a90cd1020048cec923ddd989e6c3cdd0479 100644
--- a/vendor/trails/trails.php
+++ b/vendor/trails/trails.php
@@ -997,11 +997,13 @@ class Trails_Flash implements ArrayAccess {
   }
 
 
+  #[ReturnTypeWillChange]
   function offsetExists($offset) {
     return isset($this->flash[$offset]);
   }
 
 
+  #[ReturnTypeWillChange]
   function offsetGet($offset) {
     return $this->get($offset);
   }
@@ -1012,6 +1014,7 @@ class Trails_Flash implements ArrayAccess {
   }
 
 
+  #[ReturnTypeWillChange]
   function offsetUnset($offset) {
     unset($this->flash[$offset], $this->used[$offset]);
   }