@@ -52,23 +52,29 @@ public static function last(string $string): string
5252
5353 public static function camelCase (string $ string ): string
5454 {
55+ $ firstCharIsLowerCase = ctype_lower (mb_substr ($ string , 0 , 1 , static ::ENCODING ));
5556 $ string = str_replace (['- ' , '_ ' ], ' ' , $ string );
5657 $ string = ucwords ($ string );
5758 $ string = str_replace (' ' , '' , $ string );
59+ if ($ firstCharIsLowerCase ) {
60+ $ string = static ::lowerFirst ($ string );
61+ }
5862 return $ string ;
5963 }
6064
6165 public static function snakeCase (string $ string ): string
6266 {
67+ $ string = static ::camelCase ($ string );
6368 $ string = preg_replace ('/([a-z])([A-Z])/ ' , '$1_$2 ' , $ string );
69+ $ string = str_replace ([' ' , '- ' ], '_ ' , $ string );
6470 $ string = strtolower ($ string );
6571 return $ string ;
6672 }
6773
6874 public static function kebabCase (string $ string ): string
6975 {
70- $ string = preg_replace ( ' /([a-z])([A-Z])/ ' , ' $1-$2 ' , $ string );
71- $ string = strtolower ( $ string );
76+ $ string = static :: snakeCase ( $ string );
77+ $ string = str_replace ( ' _ ' , ' - ' , $ string );
7278 return $ string ;
7379 }
7480
0 commit comments