Completed
Push — master ( cc3169...2120e0 )
by Hong
03:11
created

ConversionTrait::removeSuffix()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 9
rs 9.6666
cc 2
eloc 6
nc 2
nop 2
1
<?php
2
/**
3
 * Phossa Project
4
 *
5
 * PHP version 5.4
6
 *
7
 * @category  Library
8
 * @package   Phossa2\Shared
9
 * @copyright Copyright (c) 2016 phossa.com
10
 * @license   http://mit-license.org/ MIT License
11
 * @link      http://www.phossa.com/
12
 */
13
/*# declare(strict_types=1); */
14
15
namespace Phossa2\Shared\String;
16
17
/**
18
 * ConversionTrait
19
 *
20
 * String conversion utilities
21
 *
22
 * @package Phossa2\Shared
23
 * @author  Hong Zhang <[email protected]>
24
 * @version 2.0.28
25
 * @since   2.0.28 added
26
 */
27
trait ConversionTrait
28
{
29
    /**
30
     * Convert case of a string.
31
     *
32
     * Supported $toCase are
33
     *
34
     * 'PASCAL': PascalCase
35
     * 'CAMEL' : camelCase
36
     * 'SNAKE' : snake_case
37
     *
38
     * @param  string $string
39
     * @param  string $toCase
40
     * @return string
41
     * @access public
42
     * @static
43
     */
44
    public static function convertCase(
45
        /*# string */ $string,
46
        /*# string */ $toCase
47
    )/*# string */ {
48
        // break into lower case words
49
        $str = strtolower(ltrim(
50
            preg_replace(['/[A-Z]/', '/[_]/'], [' $0', ' '], $string)
51
        ));
52
53
        switch (strtoupper($toCase)) {
54
            case 'PASCAL':
55
                return str_replace(' ', '', ucwords($str));
56
            case 'CAMEL' :
0 ignored issues
show
Coding Style introduced by
There must be no space before the colon in a CASE statement

As per the PSR-2 coding standard, there must not be a space in front of the colon in case statements.

switch ($selector) {
    case "A": //right
        doSomething();
        break;
    case "B" : //wrong
        doSomethingElse();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
57
                return lcfirst(str_replace(' ', '', ucwords($str)));
58
            default: // SNAKE
59
                return str_replace(' ', '_', $str);
60
        }
61
    }
62
63
    /**
64
     * Has string contain a suffix ?
65
     *
66
     * @param  string $string
67
     * @param  string $suffix
68
     * @return bool
69
     * @access public
70
     * @static
71
     */
72
    public static function hasSuffix(
73
        /*# string */ $string,
74
        /*# string */ $suffix
75
    )/*# : bool */ {
76
        $len = strlen($suffix);
77
        if ($len && substr($string, - $len) === $suffix) {
78
            return true;
79
        }
80
        return false;
81
    }
82
83
    /**
84
     * Remove a suffix from a string
85
     *
86
     * @param  string $string
87
     * @param  string $suffix
88
     * @return string
89
     * @access public
90
     * @static
91
     */
92
    public static function removeSuffix(
93
        /*# string */ $string,
94
        /*# string */ $suffix
95
    )/*# string */ {
96
        if (static::hasSuffix($string, $suffix)) {
97
            return substr($string, 0, - strlen($suffix));
98
        }
99
        return $string;
100
    }
101
}
102