Passed
Push — master ( 3764eb...eb004c )
by Adrian Florin
04:02
created

PathHelper   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 0
dl 0
loc 60
ccs 0
cts 25
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A normalizePathSeparator() 0 5 1
A extractFilenameFromPath() 0 5 1
A splitFilename() 0 16 2
1
<?php
2
/**
3
 * This file is part of the NeedleProject\FileIo package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
namespace NeedleProject\FileIo\Helper;
9
10
use NeedleProject\FileIo\File;
11
12
/**
13
 * Class PathHelper
14
 *
15
 * @package NeedleProject\FileIo\Helper
16
 * @author Adrian Tilita <[email protected]>
17
 * @copyright 2017 Adrian Tilita
18
 * @license https://opensource.org/licenses/MIT MIT Licence
19
 */
20
class PathHelper
21
{
22
    /**
23
     * Convert path separator to the system's default separator
24
     *
25
     * For example:
26
     * root\\foo/bar\ becomes root:
27
     * - \\foo\\bar on Windows and
28
     * - /root/foo/bar on Linux
29
     *
30
     * @param string $path
31
     * @return string
32
     */
33
    public function normalizePathSeparator(string $path): string
34
    {
35
        $path = preg_replace('#(\\\|\/)#', DIRECTORY_SEPARATOR, $path);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $path. This often makes code more readable.
Loading history...
36
        return preg_replace('#' . DIRECTORY_SEPARATOR . '{2,}#', DIRECTORY_SEPARATOR, $path);
37
    }
38
39
    /**
40
     * Extract the the filename from a path
41
     *
42
     * Example: from /foo/bar/file.ext will result file.ext
43
     *
44
     * @param string $filePath
45
     * @return string
46
     */
47
    public function extractFilenameFromPath(string $filePath): string
48
    {
49
        $fileParts = explode(DIRECTORY_SEPARATOR, $filePath);
50
        return array_pop($fileParts);
51
    }
52
53
    /**
54
     * Split a filename into an array containing the name and extension
55
     * Example:
56
     *  file.ext -> [file, ext]
57
     *  .htaccess -> ['', htaccess]
58
     *  name -> [name, '']
59
     *
60
     * @param string $filename
61
     * @return array
62
     */
63
    public function splitFilename(string $filename): array
64
    {
65
        if (false === strpos($filename, File::EXTENSION_SEPARATOR)) {
66
            $extension = '';
67
            $name = $filename;
68
        } else {
69
            $filenameParts = explode(File::EXTENSION_SEPARATOR, $filename);
70
            $extension = array_pop($filenameParts);
71
            $name = implode(File::EXTENSION_SEPARATOR, $filenameParts);
72
        }
73
74
        return [
75
            $name,
76
            $extension
77
        ];
78
    }
79
}
80