ちょっと必要に駆られて書きました。
<?php
class String
{
public static function underscore($str)
{
return ltrim(strtolower(preg_replace('/[A-Z]/', '_\0', $str)), '_');
}
public static function camelize($str)
{
return lcfirst(strtr(ucwords(strtr($str, ['_' => ' '])), [' ' => '']));
}
}
$str1 = 'camelString';
$str2 = 'snake_string';
String::underscore($str1); // => 'camel_string'
String::camelize($str2); // => 'snakeString'
とくに問題なく動くはず。。