我正在从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()没有提及版本。
有谁能告诉我使用这种方法需要什么版本?
答案 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)
(没有可用的版本信息,可能只在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;
//. . .
}