Passed
Branch master (d05c4a)
by Adrian Florin
03:53 queued 54s
created

PathHelper::extractFilenameFromPath()   A

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 44
    public function normalizePathSeparator(string $path): string
34
    {
35 44
        $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 44
        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 $file_path
45
     * @return string
46
     */
47 43
    public function extractFilenameFromPath(string $file_path): string
0 ignored issues
show
Coding Style introduced by
$file_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
48
    {
49 43
        $fileParts = explode(DIRECTORY_SEPARATOR, $file_path);
0 ignored issues
show
Coding Style introduced by
$file_path does not seem to conform to the naming convention (^[a-z][a-zA-Z0-9]*$).

This check examines a number of code elements and verifies that they conform to the given naming conventions.

You can set conventions for local variables, abstract classes, utility classes, constant, properties, methods, parameters, interfaces, classes, exceptions and special methods.

Loading history...
50 43
        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 44
    public function splitFilename(string $filename): array
64
    {
65 44
        if (false === strpos($filename, File::EXTENSION_SEPARATOR)) {
66 8
            $extension = '';
67 8
            $name = $filename;
68
        } else {
69 36
            $filenameParts = explode(File::EXTENSION_SEPARATOR, $filename);
70 36
            $extension = array_pop($filenameParts);
71 36
            $name = implode(File::EXTENSION_SEPARATOR, $filenameParts);
72
        }
73
74
        return [
75 44
            $name,
76 44
            $extension
77
        ];
78
    }
79
}
80