2010-01-18 2 views
1

내가 표준 PHP 라이브러리 (SPL)에서 오는 FilterIterator 클래스를 사용하는 스크립트를 작성하고 내가 PHP 5.x의 버전을 건너 다른 behabours :(여기에 동의() 함수를 얻을 :PHP에서 DirectoryIterator + FilterIterator 동작이 일치하지 않습니까?

public function accept() 
{ 
$current = $this->current(); 
print_r($current);  

    return true; 
} 

및 heres는 PHP 5.3.1에 대한 출력 :

DirectoryIterator Object 
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/. 
    [fileName:SplFileInfo:private] => . 
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
) 
DirectoryIterator Object 
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.. 
    [fileName:SplFileInfo:private] => .. 
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
) 
DirectoryIterator Object 
(
    [pathName:SplFileInfo:private] => /Users/alex/Sites/dev/php/fscms/content/.DS_Store 
    [fileName:SplFileInfo:private] => .DS_Store 
    [glob:DirectoryIterator:private] => 
    [subPathName:RecursiveDirectoryIterator:private] => 
) 

과를 heres 5.2.5

DirectoryIterator Object 
(
) 
DirectoryIterator Object 
(
) 
DirectoryIterator Object 
(
) 

후자는 당이 제가 PHP에서 같은 코드를 얻을 임무 755 모든 파일에. 뭐야? PHP.net에서

답변

2

실제로 이렇게 보입니다! 외관상으로 하늘 인 DirectoryIterator 객체의 메소드를 호출하면 (자) 불려갑니다. 내가 가지고있는 문제는 다른 곳에서 있었고 이러한 개체를 복제하는 것과 관련이있었습니다. PHP 5.3 클론이 깊은 것 같지만 5.2는 그렇게하지 않으면 모든 레퍼런스가 반복 될 때마다 죽는다. 그것의 추악한, 문서화되지 않은 엉망 : PHP는 짜증!

0

:

  • 참고 :이 확장은 더 이상 사용할 수 없습니다 때문에 항상 사용할 수있는 PHP 5.3.0.

아마도 PHP 5.2.5 구성이 어떤 방식 으로든 불완전하거나 잘못 되었나요? 경고를 표시하도록 오류 로그를 설정 했습니까? 그렇지 않다면 조정하고 코드를 다시 실행하여 경고를 던지십시오.

+0

그래, 나는 그것을 보았다. 그러나 클래스가 존재한다는 것은 올바르게 설치되었다는 것을 의미한다. 따라서 버전 간 구현에 일종의 변화가 있어야한다고 생각합니다. 또한 공유 호스팅에서 제어 할 수 없습니다. 좀 더 견고하게 만들기 위해 "평균적인"서버에서 스크립트를 디버그하고 싶었습니다. – CpILL

+0

마찬가지로, 내 .htaccess 파일에 에 php_flag display_errors가 있습니다. 오류가 나타나지 않습니다 : < – CpILL

+0

그래, 정말 이상합니다 ... 누군가 다른 사람이 소리내어 울 수 있습니다. –

관련 문제