PathHelper::normalizePathSeparator()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
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 54
    public function normalizePathSeparator($path)
34
    {
35 54
        $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 54
        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 53
    public function extractFilenameFromPath($filePath)
48
    {
49 53
        $fileParts = explode(DIRECTORY_SEPARATOR, $filePath);
50 53
        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 52
    public function splitFilename($filename)
64
    {
65 52
        $extension = '';
66 52
        $name = $filename;
67 52
        if (false !== strpos($filename, File::EXTENSION_SEPARATOR)) {
68 36
            $filenameParts = explode(File::EXTENSION_SEPARATOR, $filename);
69 36
            $extension = array_pop($filenameParts);
70 36
            $name = implode(File::EXTENSION_SEPARATOR, $filenameParts);
71
        }
72
73
        return [
74 52
            $name,
75 52
            $extension
76
        ];
77
    }
78
}
79