- preg_match_all: documentation ( source)
- implode: documentation ( source)
- strtolower: documentation ( source)
<?php
const testNamespacedClasses = [
"Namespace\To\SettingOption",
"I\Was\Born\InTheUSAIwas",
"Something\Onething"
];
function testSnakeCasedModelNames() {
foreach (testNamespacedClasses as $class) {
echo "$class => ";
echo strtolower(
implode('_',
preg_match_all('~(?:[^\\\\]*\\\\)*\K[A-Z][a-z]*~', $class, $words) ? $words[0] : []
)
);
echo "\n---\n";
}
}
echo testSnakeCasedModelNames();