DirectoryIterator :: getExtension()版本

时间:2011-12-14 16:29:07

标签: php

我正在从CLI运行PHP脚本,该脚本使用PHP中的DirectoryIterator::getExtension()方法。

我正在运行的PHP版本是5.3.5,但我一直收到错误Fatal error: Call to undefined method DirectoryIterator::getExtension()

该脚本在运行PHP 5.3.6的本地开发机器上运行正常,没有错误。但是,PHP人员中的page for DirectoryIterator::getExtension()没有提及版本。

有谁能告诉我使用这种方法需要什么版本?

3 个答案:

答案 0 :(得分:8)

这是获取文件扩展名的一种更简单的方法,IMO:

<?php
  $iterator = new DirectoryIterator($data_dir);
  foreach($iterator as $entity) {
    if($entity->isFile()) {
      $file_extension = pathinfo($entity->getFilename(), PATHINFO_EXTENSION);
      ...
    }
  }
?>

答案 1 :(得分:5)

From the documentation

  

(没有可用的版本信息,可能只在SVN中)

似乎提交没有进行PHP 5.3.5构建,但是进入了5.3.6版本。该页面尚未更新。

正如马里奥指出的那样,5.3.6 changelog提到了另外一点:

  
      
  • SPL扩展名:      
        
    • ...
    •   
    • 添加了SplFileInfo :: getExtension()。 FR#48767。 (彼得考伯恩)
    •   
  •   

答案 2 :(得分:1)

难怪,我一直得到getExtension()。虽然有文件证明,但它不是5.3.5版本。我正在使用此解决方法来解决缺少的getExtension():

foreach($iter as $splFileInfo) {

  $fileName = $splFileInfo->getFilename();

  $pos_dot = strrpos($fileName, "."); // find '.'

  $ext = ($pos_dot !== false) ? substr($fileName, $pos_dot+1) : null;
  //. . .
}