오픈 소스 프로젝트 - XE 개발 포럼
글수 255
http://bnufactory.com/unit_test.php
http://bnufactory.com/unit_test.phps
ex) 1234, 3 => 123/004/
위와 같이 반환되어야 하지만 실제는 '234/001/'로 반환됩니다.
원래 의도대로라면...
'1000'과 '10000'이 '100/000/'으로 같은 문자열을 반환하므로 '100/0', '100/00' 으로 반환하기~
정작 문제는 이게 오래된 함수라 고치면 그게 또 문제네요.;
http://bnufactory.com/unit_test.phps
/config/func.inc.php
/**
* @brief 주어진 숫자를 주어진 크기로 recursive하게 잘라줌
* @param no 주어진 숫자
* @param size 잘라낼 크기
*
* ex) 12, 3 => 012/
* ex) 1234, 3 => 123/004/
**/
function getNumberingPath($no, $size=3) {
$mod = pow(10, $size);
$output = sprintf('%0'.$size.'d/', $no%$mod);
if($no >= $mod) $output .= getNumberingPath((int)$no/$mod, $size);
return $output;
}member_srl, document_srl 등의 숫자를 세 자리(기본 값)씩 끊어 디렉토리 경로를 생성해주는 함수인데요.ex) 1234, 3 => 123/004/
위와 같이 반환되어야 하지만 실제는 '234/001/'로 반환됩니다.
원래 의도대로라면...
function getNumberingPath($no, $size=3) {
$no = str_split($no, $size);
for($i = 0; $i < count($no); $i++) {
$output .= sprintf('%03d/', $no[$i]);
}
return $output;
}'1000'과 '10000'이 '100/000/'으로 같은 문자열을 반환하므로 '100/0', '100/00' 으로 반환하기~
function getNumberingPath($no, $size=3) {
$no = str_split($no, $size);
$output = implode('/', $no);
return $output.'/';
}정작 문제는 이게 오래된 함수라 고치면 그게 또 문제네요.;





기능 자체는 한 디렉토리에 최고 999개의 디렉토리만 생성가능하도록 하여 파일시스템에 무리가 가거나 디렉토리가 생성되지 않는 부작용을 막기 위한 것이라 문제는 없다고 생각합니다.
주석을 수정해야지 기존의 구조에 문제를 안 일으킬 것 같고 주석대로 수정하면;; 파일을 찾지 못하는 일이 생길 것 같습니다. ^^;