suin.io

PHPでpascal case, camel case, snake caseを変換する関数

suin2010年10月29日

最近、パスカルケース・キャメルケース・スネークケースという言葉を知ったのでまとめておきます。言語学の記事じゃないですよ!

パスカルケース(pascal case)

パスカルケースとは、単語の1文字目が大文字で表現した文字列のことです。例えば、PlayStation、MacBook、MacDonald。

キャメルケース(camel case)

キャメルケースとは、パスカルケースと似ていますが、文字列の最初が小文字になります。例えば、iPhone、iTunes、eBay。パスカルケースを含めてキャメルケースと呼ぶこともあるけど、ここでは区別します。

スネークケース(snake case)

スネークケースとは、単語境界をアンダースコア(_)でつないだも文字列です。例えば、file_get_contents、var_dump、。蛇の入れ物じゃないよ。

で、何がしたいかというと…

こんなことがしたかったので、変換用の関数を作ってみました。

  • snake_caseのテーブル名 → PascalCaseのモデルクラスを作りたい
  • snake_caseのURL → PascalCaseのコントローラクラスを作りたい
  • snake_caseのURL → camelCaseのアクションメソッドを作りたい
function pascalize($string)
{
	$string = strtolower($string);
	$string = str_replace('_', ' ', $string);
	$string = ucwords($string);
	$string = str_replace(' ', '', $string);
	return $string;
}

function camelize($string)
{
	$string = pascalize($string);
	$string[0] = strtolower($string[0]);
	return $string;
}

function snake_case($string)
{
	$string = preg_replace('/([A-Z])/', '_$1', $string);
	$string = strtolower($string);
	return ltrim($string, '_');
}

$strings = array(
	'snake_case_string',
	'SNAKE_CASE_STRING_UPPER',
	'camelCaseString',
	'PascalCaseString',
);

foreach ( $strings as $string )
{
	echo 'pascalized:  ';
	echo pascalize($string)."\n";

	echo 'camelized:   ';
	echo camelize($string)."\n";

	echo 'snake-cased: ';
	echo snake_case($string)."\n";
	
	echo "------\n";
}

実行結果

pascalized:  SnakeCaseString
camelized:   snakeCaseString
snake-cased: snake_case_string
------
pascalized:  SnakeCaseStringUpper
camelized:   snakeCaseStringUpper
snake-cased: s_n_a_k_e__c_a_s_e__s_t_r_i_n_g__u_p_p_e_r
------
pascalized:  Camelcasestring
camelized:   camelcasestring
snake-cased: camel_case_string
------
pascalized:  Pascalcasestring
camelized:   pascalcasestring
snake-cased: pascal_case_string
------
RELATED POSTS