- preg_replace_callback: documentation ( source)
- lcfirst: documentation ( source)
<?php
const testNamespacedClasses = [
"Namespace\To\SettingOption",
"I\Was\Born\InTheUSAIwas",
"Something\Onething"
];
function testSnakeCasedModelNames() {
foreach (testNamespacedClasses as $class) {
echo "$class => ";
echo preg_replace_callback(
'~([^\\\\]*\\\\)*([A-Z][a-z]*)~',
function($m) {
return ($m[1] ? '' : '_') . lcfirst($m[2]);
},
$class
);
echo "\n---\n";
}
}
echo testSnakeCasedModelNames();