Intereting Posts
PHP: Не заполняйте поля формы электронной почты, которые остались пустыми. Массовые параметризованные вставки SPL против массива: когда следует использовать SPL и когда мы должны использовать Array в PHP? Строка не может быть преобразована в JSONArray Вырезать HTML-теги и снова обернуть теги HTML. Часть / 1 Как я могу выполнять свою позицию на странице при обновлении (AJAX) Проблема с чтением файлов размером более 1 ГБ с помощью XMLReader Как использовать AWS SQS / SNS в качестве push-очереди уведомлений для задач большой обработки через PHP? Как проверить, содержит ли многомерный массив только пустые значения? извлекать записи с помощью ajax и отображать их в php Могу ли я обслуживать файлы MP3 с помощью PHP? Поиск ключа минимального значения в ассоциативном массиве Маршрутная привязка модели и мягкие удаления – Laravel 4 Расширение DOMDocument и DOMNode: проблема с объектом возврата Выбор значения атрибута в SimpleXML

Преобразование CamelCase в under_score_case в php __autoload ()

Руководство по PHP предлагает автозагрузить классы, такие как

function __autoload($class_name){ require_once("some_dir/".$class_name.".php"); } 

и этот подход отлично подходит для загрузки класса FooClass сохраненного в файле my_dir/FooClass.php как

 class FooClass{ //some implementation } 

Вопрос

Как я могу использовать _autoload() и получить доступ к файлу my_dir/foo_class.php в файле my_dir/foo_class.php ?

Related of "Преобразование CamelCase в under_score_case в php __autoload ()"

Вы можете преобразовать имя класса, как это …

 function __autoload($class_name){ $name = strtolower(preg_replace('/([az])([AZ])/', '$1_$2', $class_name)); require_once("some_dir/".$name.".php"); } 

Это не проверено, но я использовал что-то подобное раньше, чтобы преобразовать имя класса. Я могу добавить, что моя функция также работает в O (n) и не полагается на медленное обратное обращение.

 // lowercase first letter $class_name[0] = strtolower($class_name[0]); $len = strlen($class_name); for ($i = 0; $i < $len; ++$i) { // see if we have an uppercase character and replace if (ord($class_name[$i]) > 64 && ord($class_name[$i]) < 91) { $class_name[$i] = '_' . strtolower($class_name[$i]); // increase length of class and position ++$len; ++$i; } } return $class_name;