From b992fe2fe222bc1493393188d6898d046d775e39 Mon Sep 17 00:00:00 2001
From: Marc Egger <marc.egger@uzh.ch>
Date: Tue, 13 Oct 2020 13:00:16 +0200
Subject: [PATCH] Path.php: replace func_get_args() with ...$var unpacking
 notation

---
 extension/Classes/Core/Helper/Path.php | 60 +++++++++++++++-----------
 1 file changed, 35 insertions(+), 25 deletions(-)

diff --git a/extension/Classes/Core/Helper/Path.php b/extension/Classes/Core/Helper/Path.php
index 78d426ad2..2af5aa94d 100644
--- a/extension/Classes/Core/Helper/Path.php
+++ b/extension/Classes/Core/Helper/Path.php
@@ -99,7 +99,7 @@ class Path
      */
     public static function absoluteApp(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToApp(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToApp(), $pathPartsToAppend);
     }
 
     /**
@@ -109,7 +109,7 @@ class Path
      */
     public static function absoluteExt(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToExt(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToExt(), $pathPartsToAppend);
     }
 
     /**
@@ -119,7 +119,7 @@ class Path
      */
     public static function absoluteLog(...$pathPartsToAppend): string
     {
-        return self::realpath(self::cwdToLog(), ...$pathPartsToAppend);
+        return self::realpath(self::cwdToLog(), $pathPartsToAppend);
     }
 
     /**
@@ -159,78 +159,86 @@ class Path
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToLog(/* path parts to append */): string
+    public static function cwdToLog(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$cwdToLog);
-        return self::join(self::$cwdToLog, func_get_args());
+        return self::join(self::$cwdToLog, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToApp(/* path parts to append */): string
+    public static function cwdToApp(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$cwdToApp);
-        return self::join(self::$cwdToApp, func_get_args());
+        return self::join(self::$cwdToApp, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToProject(/* path parts to append */): string
+    public static function appToProject(...$pathPartsToAppend): string
     {
         self::enforcePathIsSet(self::$appToProject);
-        return self::join(self::$appToProject, func_get_args());
+        return self::join(self::$appToProject, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToProject(/* path parts to append */): string
+    public static function cwdToProject(...$pathPartsToAppend): string
     {
-        return self::cwdToApp(self::appToProject(func_get_args()));
+        return self::cwdToApp(self::appToProject($pathPartsToAppend));
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToExt(/* path parts to append */): string
+    public static function appToExt(...$pathPartsToAppend): string
     {
-        return self::join(self::APP_TO_EXT, func_get_args());
+        return self::join(self::APP_TO_EXT, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function cwdToExt(/* path parts to append */): string
+    public static function cwdToExt(...$pathPartsToAppend): string
     {
-        return self::cwdToApp(self::APP_TO_EXT, func_get_args());
+        return self::cwdToApp(self::APP_TO_EXT, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function extToApi(/* path parts to append */): string
+    public static function extToApi(...$pathPartsToAppend): string
     {
-        return self::join(self::EXT_TO_API, func_get_args());
+        return self::join(self::EXT_TO_API, $pathPartsToAppend);
     }
 
     /**
+     * @param array $pathPartsToAppend
      * @return string
      * @throws \UserFormException
      */
-    public static function appToApi(/* path parts to append */): string
+    public static function appToApi(...$pathPartsToAppend): string
     {
-        return self::join(self::APP_TO_EXT, self::EXT_TO_API, func_get_args());
+        return self::join(self::APP_TO_EXT, self::EXT_TO_API, $pathPartsToAppend);
     }
 
     /**
@@ -308,15 +316,17 @@ class Path
     }
 
     /**
-     * Join the arguments together as a path.
-     * The second argument may be an array of parts. (further arguments are ignored in that case)
+     * Join the arguments together as a path. Array arguments are flattened!
+     * Trailing path parts may not start with '/'.
      *
+     * join(['this', 'is'], 'my/wonderful', [['path/of', 'nice'], 'things']) === 'this/is/my/wonderful/path/of/nice/things'
+     *
+     * @param array $pathPartsToAppend
      * @return string
-     * @throws \UserFormException  Don't remove.
      */
-    public static function join(/* path parts to append */): string
+    public static function join(...$pathPartsToAppend): string
     {
-        $parts = func_get_args();
+        $parts = $pathPartsToAppend;
 
         // concatenate all parts (arrays are flattened)
         $path = '';
@@ -493,6 +503,6 @@ EOF;
         if ($absolutePath === false) {
             Thrower::userFormException('Path not found.', "Either file/dir not exists or access not permitted: $cwdToSomethingThatExists.");
         }
-        return self::join($absolutePath, ...$pathPartsToAppend);
+        return self::join($absolutePath, $pathPartsToAppend);
     }
 }
\ No newline at end of file
-- 
GitLab