2009-12-31 9 views
1

주어진 디렉터리에있는 모든 폴더 (비 재귀)를 나열하는 간단한 함수가 필요합니다. 디렉토리는 항상 동일합니다 (내 테마 디렉토리의 images 폴더).특정 디렉토리에 폴더를 나열하는 방탄 메서드 (PHP 4 호환)

나는 아래의 기능을 사용하고 있지만, PHP 버전은 내가하는 PHP 버전 확인에서 함수를 래핑 수도있을 것 같군요 < 5.

때 실패합니다. 나는 동시에 효율적으로 동시에 방탄 기능을 가능하게하려고 노력하고있다. 이 같은 빛 의무를 가지고 있기 때문에

, 나는 PHP 5를 필요로하는이 기능

이 기능은 테마의 이미지 디렉토리를 구문 분석하고 거기에 발견 모든 폴더의 배열을 반환에 대한 과잉이라고 생각하고 있어요. 그게 정말로 필요한 모든 것입니다. 그래서 DirectoryIterator를 사용하는 것이 PHP5 +를 필요로하기 때문에 과잉이라고 생각합니다. 또한, function_exists 테스트

function get_dirs($path = '.') 
    { 
     $dirs = array(); 
     if(function_exists('DirectoryIterator')) 
     { 
      foreach (new DirectoryIterator($path) as $file) 
      { 
       if ($file->isDir() && !$file->isDot()) 
       { 
       $dirs[] = $file->getFilename(); 
       } 
      } 
     } 
     else 
     { 
      //exception 
      return array("theme1" => "theme1", "theme2" => "theme2", "theme3" => "theme3"); 
     } 
    return $dirs; 
    } 
+0

function_exists ('DirectoryIterator')가 false를 반환합니다. class_exists()가 필요합니다. –

답변

2

PHP/4.0 이상 :

<?php 

$dh = opendir('/'); 
if($dh){ 
    while(($item = readdir($dh)) !== false){ 
     if(is_dir($dir . $item)){ 
      echo $item . "\n"; 
     } 
    } 
    closedir($dh); 
} 

?> 

PHP/4.3 이상 : DirectoryIterator, 그것은 클래스 함수의이 아니기 때문에

<?php 

foreach(glob('/*', GLOB_ONLYDIR) as $i){ 
    echo $i . "\n"; 
} 

?> 
2

dir 디렉토리 클래스는 PHP 4부터 사용할 수있다 ... 작동하지 않는, 그래서 당신의 목적에 적합해야한다.

설명서 페이지 자체에 몇 가지 좋은 예가 있으므로 여기서 그 내용을 중복하지 않겠습니다.

관련 문제