[英]Convert CamelCase to under_score_case in php __autoload()
PHP手冊建議自動加載類
function __autoload($class_name){
require_once("some_dir/".$class_name.".php");
}
並且這種方法可以很好地加載保存在my_dir/FooClass.php
文件中的類FooClass
class FooClass{
//some implementation
}
題
如何才能使用_autoload()
函數並訪問文件my_dir/foo_class.php
保存的FooClass
?
你可以像這樣轉換類名...
function __autoload($class_name){
$name = strtolower(preg_replace('/([a-z])([A-Z])/', '$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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.