클래스 로더
컨텐츠 정보
- 17,466 조회
- 6 추천
- 목록
본문
모듈의 load와 unload를 효율적으로 관리하다 보면 클래스 로더가 유용한 경우가 많이 있습니다.
제 경우는 사용하는 클래스중 기본 매개변수를 받는 녀석들이 좀 있어서 매개 변수를 처리할 방법을 생각하다가 eval 이라는 엽기적인 결론에 도달해버렸습니다.
다음은 제가 사용하는 webapp 클래스의 일부입니다.
class WebApp {
function import($module) {
$file = "class.$module.php";
require_once($file);
return true;
}
function init($module) {
if (WebApp::import($module)) {
$argv = func_get_args();
unset($argv[0]);
$params = array();
foreach ($argv as $param) {
$param = (is_numeric($param)) ? $param : "\\"$param\\"";
$params[] = $param;
}
$params = implode(',',$params);
eval("\\$o = new $module($params);");
return $o;
}
}
}
// examples
$DB = WebApp::init('DB');
$AQ = WebApp::init('AutoQuery','az_member');
-_-;;
- FLUTIA
호오.. eval 이라.. 괜찮은데요. ^_^ 08/17 10:19:46
- sh.
${$o} = new ${$module}($params);
로 처리해도 같은 것이겠네요. 08/18 10:22:37
- sh.
$params = implode(',',$params);
이 부분을 제가 잘못 이해했군요. 굳이 eval을 사용한 이유를 이해했습니다 :) 08/18 18:06:22
- sh.
아 그런데, $params에 "나 '가 escape되지 않더군요.
init메쏘드의 foreach안쪽을
$param = (is_numeric($param)) ? $param : "\\"".addslashes($param)."\\"";
이런식으로 처리해주어야 할듯합니다.
한수 배웠습니다 감사합니다^^ 08/18 18:24:59
- 거친마루
네^^ slash 처리에 대해서는 생각하고 있었습니다만..
아직은 저 혼자 쓰는중이라 제가 조심하면 올바르지 않은 파라미터가 들어갈 경우가 생기지 않아서 아직 방치하고 있습니다 ^^ 많은 사람들이 사용하는 일반적인 방법이 된다면 slash 처리뿐 아니라 악성코드 사용 가능성에 대해서도 철저히 따져 막아야겠지요 ^^
제 경우는 사용하는 클래스중 기본 매개변수를 받는 녀석들이 좀 있어서 매개 변수를 처리할 방법을 생각하다가 eval 이라는 엽기적인 결론에 도달해버렸습니다.
다음은 제가 사용하는 webapp 클래스의 일부입니다.
class WebApp {
function import($module) {
$file = "class.$module.php";
require_once($file);
return true;
}
function init($module) {
if (WebApp::import($module)) {
$argv = func_get_args();
unset($argv[0]);
$params = array();
foreach ($argv as $param) {
$param = (is_numeric($param)) ? $param : "\\"$param\\"";
$params[] = $param;
}
$params = implode(',',$params);
eval("\\$o = new $module($params);");
return $o;
}
}
}
// examples
$DB = WebApp::init('DB');
$AQ = WebApp::init('AutoQuery','az_member');
-_-;;
- FLUTIA
호오.. eval 이라.. 괜찮은데요. ^_^ 08/17 10:19:46
- sh.
${$o} = new ${$module}($params);
로 처리해도 같은 것이겠네요. 08/18 10:22:37
- sh.
$params = implode(',',$params);
이 부분을 제가 잘못 이해했군요. 굳이 eval을 사용한 이유를 이해했습니다 :) 08/18 18:06:22
- sh.
아 그런데, $params에 "나 '가 escape되지 않더군요.
init메쏘드의 foreach안쪽을
$param = (is_numeric($param)) ? $param : "\\"".addslashes($param)."\\"";
이런식으로 처리해주어야 할듯합니다.
한수 배웠습니다 감사합니다^^ 08/18 18:24:59
- 거친마루
네^^ slash 처리에 대해서는 생각하고 있었습니다만..
아직은 저 혼자 쓰는중이라 제가 조심하면 올바르지 않은 파라미터가 들어갈 경우가 생기지 않아서 아직 방치하고 있습니다 ^^ 많은 사람들이 사용하는 일반적인 방법이 된다면 slash 처리뿐 아니라 악성코드 사용 가능성에 대해서도 철저히 따져 막아야겠지요 ^^
관련자료
댓글 0
등록된 댓글이 없습니다.