php는 아주 간편하게 사용할 수 있는 스크립트 언어다. 문법도 C랑 비슷해서 새로 공부해야 할 것도 그렇게 많지는 않다. 하지만 그 간편함 속에 숨겨진 php의 악마성이 있으니...

그것은 바로 문자든 숫자든 구분을 하지 않는다는 것이다...

먼저 아래의 코드를 보자. 디렉토리에 있는 내용을 단순히 출력 해주는 루틴이다.

$dirHandle = opendir("/home/kukuta/") or die("error opendir()")

while($filename = readdir($dirHandle))
{
    echo $filename."\n";
}
정말 간단한 소스다. 그냥 단순히 읽고 출력하는 것이 전부다.

하지만 만일 /home/kukuta 디렉토리에 파일이름이 '0' 인 파일이 들어 있다고 한다면, 상황은 어떻게 변할까?
filename 변수는 0으로 채워질 것이고 while문에서는 filename이 0이기 때문에 문자열이든 숫자이든 상관하지 않고 루프를 끝내 버릴것이다.

물론 파일이름이 0으로 될일은 거의 없지만 이런 상황이 없으리라는 법은 없다. 그래서 위의 소스를 아래와 같이 수정 해보았다.
$dirHandle = opendir("/home/kukuta/") or die("error opendir()")

while(false !==($filename = readdir($dirHandle)))
{
    echo $filename."\n";
}
이렇게 수정 된다면 파일이름이 뭐가 나오든 opendir()이나 readdir()함수가 실패 하지 않는다면 파일들을 출력하다가 중간에 멈추는 일은 없을 것이다.

참고 서적 : PHP4 웹프로그래밍 가이드 : 마이트press : 이승혁 저
               (위의 오류에 소지가 있는 코드가 쓰여져 있는 책이다 -_-)

'진리는어디에' 카테고리의 다른 글

Edge trigger vs Level trigger  (2) 2007.01.05
const vs mutable  (4) 2006.12.21
PHP - 문자열 취급하기  (0) 2006.12.14
가변인자를 이용한 함수(va_list)  (10) 2006.12.13
SQL command  (0) 2006.12.13
Writing a Windows Service Program  (8) 2006.12.11
Posted by kukuta
TAG

댓글을 달아 주세요