2011-12-14 30 views
6

Tôi đang chạy một tập lệnh PHP từ CLI mà người dùng phương pháp DirectoryIterator::getExtension() trong PHP.DirectoryIterator :: getExtension() phiên bản

Các phiên bản của PHP Tôi đang chạy dưới là 5.3.5, nhưng tôi cứ bị lỗi nói Fatal error: Call to undefined method DirectoryIterator::getExtension()

Các kịch bản hoạt động tốt trong máy dev địa phương của tôi chạy PHP 5.3.6, không có lỗi. Tuy nhiên, page for DirectoryIterator::getExtension() trong PHP người đàn ông không có đề cập đến phiên bản.

Bất kỳ ai có thể cho tôi biết phiên bản nào tôi cần phải sử dụng phương pháp này không?

+3

Các changelog ('NEWS') nói rằng đó là thực sự được giới thiệu trong 5.3.6. 'Đã thêm SplFileInfo :: getExtension(). FR # 48767.' – mario

Trả lời

5

From the documentation:

(Không có thông tin phiên bản có sẵn, chỉ có thể là trong SVN)

Nó có vẻ như cam kết không làm cho PHP 5.3.5 build, nhưng dấn thân vào 5.3.6 phát hành. Trang chưa được cập nhật.

Và như Mario chỉ ra, 5.3.6 changelog đề cập đến việc bổ sung:

  • SPL mở rộng:
    • ...
    • Added SplFileInfo :: getExtension(). FR # 48767. (Peter Cowburn)
+2

cảm ơn. Tôi cho rằng tôi sẽ phải sử dụng pathinfo() để thay thế. Bất kỳ suy nghĩ nào khác? Cảm ơn. – julio

+0

@julio: Khác với việc cập nhật phiên bản trực tiếp của bạn lên phiên bản 5.3.5, có vẻ như tất cả những gì bạn có thể làm. –

1

Không ngạc nhiên, tôi giữ lấy getExtension(). Mặc dù nó được ghi lại, nhưng nó không nằm trong câu 5.3.5. Tôi đang sử dụng workaround này cho getExtension mất tích():

foreach($iter as $splFileInfo) { 

    $fileName = $splFileInfo->getFilename(); 

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

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

Đây là một cách đơn giản hơn nhiều để có được phần mở rộng tập tin, IMO:

<?php 
    $iterator = new DirectoryIterator($data_dir); 
    foreach($iterator as $entity) { 
    if($entity->isFile()) { 
     $file_extension = pathinfo($entity->getFilename(), PATHINFO_EXTENSION); 
     ... 
    } 
    } 
?> 
Các vấn đề liên quan